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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis SINTER语句是否与SQL WHERE语句相当?相关的知识,希望对你有一定的参考价值。

我正在努力提高我对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如何工作?

答案

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

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

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

以上是关于Redis SINTER语句是否与SQL WHERE语句相当?的主要内容,如果未能解决你的问题,请参考以下文章

SQL数据库语句优化方法

sql语句同表join写法

oracle数据库中sql%notfound的用法

Java中sql语句的引号问题

SQL语句编写注意事项

sql语句执行顺序、