Redis SINTER语句是否与SQL WHERE语句相当?

问题描述 投票:0回答:1

我正在努力提高我对Redis的理解,因为我有一个需要快速处理大量数字的项目,但是,我遇到了一个问题而且我的理解是错误的,或者我的代码不知何论按预期工作。

我在MariaDB表中有数据,我使用ioredishmset的每行数据导入Redis数据库,然后执行sadd为每个我需要关闭的点创建索引。

但是,我的结果集不匹配。例如,在MariaDB中,我从两个字段中获得了一系列粗略的55k记录:

 SELECT COUNT(`Email`) FROM myTable 
 WHERE `Qual Field A`='Yes' AND `Qual Field B`='Something else'

在Redis中使用相同的字段我得到2k左右的结果:

 SINTER qualFieldA:'Yes' qualFieldB:'Something else'

根据我在SO和其他地方所读到的内容,我的印象是,做SINTER key1:value key2:value大致相当于SELECT {fields} FROM {table} WHERE field1=value AND field2=value

是这样的,也许我的导入或悲伤电话关闭,或者我不正确理解SINTER如何工作?

javascript mysql sql redis mariadb
1个回答
1
投票

原则上你是对的,但是,除了导入过程中的错误之外,主要的嫌疑人IMO是这样的:MariaDB确实对索引进行索引并以某种方式对值进行标准化以供选择,而在redis中你所看到的就是你得到的。

因此,例如,如果您查询“是”,则将选择MariaDB中的值“是”,“是”,“是”和“是”,在redis中仅选择“是”的值。

而且它不仅仅是小写 - 如果你处理unicode,你正在进入一个痛苦的世界,试图自己实现规范化和整理。

© www.soinside.com 2019 - 2024. All rights reserved.