Redis SINTER 语句是否与 SQL WHERE 语句相当?
Are Redis SINTER statements comparable to SQL WHERE statements?
我正在努力提高对 Redis 的理解,因为我有一个项目需要快速处理大量数字,但是,我 运行 遇到了一个问题,要么我的理解是错误的,或者我的代码没有按预期工作。
我在 MariaDB table 中有数据,我正在使用 ioredis
将每一行的数据 hmset
放入 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
。
是否是这种情况,也许我的导入或 sadd 调用已关闭,还是我没有正确理解 SINTER 的工作原理?
原则上你是对的,但是,除了导入过程中的错误之外,IMO的主要怀疑是:MariaDB进行索引整理并以某种方式对值进行规范化以供选择,而在redis中所见即所得.
例如,如果查询"Yes",MariaDB中的值"Yes"、"yes"、"Yés"和"YES"都会被选中,在 Redis 中,只有 "Yes" 的值是。
这不仅仅是小写 - 如果您处理 unicode,您将进入一个痛苦的世界,试图自己实施规范化和整理。
我正在努力提高对 Redis 的理解,因为我有一个项目需要快速处理大量数字,但是,我 运行 遇到了一个问题,要么我的理解是错误的,或者我的代码没有按预期工作。
我在 MariaDB table 中有数据,我正在使用 ioredis
将每一行的数据 hmset
放入 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
。
是否是这种情况,也许我的导入或 sadd 调用已关闭,还是我没有正确理解 SINTER 的工作原理?
原则上你是对的,但是,除了导入过程中的错误之外,IMO的主要怀疑是:MariaDB进行索引整理并以某种方式对值进行规范化以供选择,而在redis中所见即所得.
例如,如果查询"Yes",MariaDB中的值"Yes"、"yes"、"Yés"和"YES"都会被选中,在 Redis 中,只有 "Yes" 的值是。
这不仅仅是小写 - 如果您处理 unicode,您将进入一个痛苦的世界,试图自己实施规范化和整理。