【发布时间】:2016-04-19 00:50:01
【问题描述】:
我正在努力提高对 Redis 的理解,因为我有一个需要快速处理大量数字的项目,但是,我遇到了一个问题,要么是我的理解错误,要么不知何故我的代码没有按预期工作。
我在 MariaDB 表中有数据,我正在使用 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。
是这样吗,也许我的 importing 或 sadd 调用已关闭,或者我没有正确理解 SINTER 的工作原理?
【问题讨论】:
-
如果您的 Set 填充正确,则流程正确。也许分享您的导入代码?
-
这是我引入记录和
sadding 的代码示例。我在想我在 sadd() 中的键控已关闭。 jsbin.com/sefevihohe/1/edit?js,output -
您的代码看起来很正常。请注意,您提供的 SINTER 不应在键名中包含刻度 ('),除非它们实际上是数据记录对象中数据的一部分(我倾向于认为它们不是)
-
哪个数字是“正确的”?
-
@ItamarHaber 不确定密钥名称中的勾号是什么意思。你指的是这条线:
.then( () => redis.sadd( 'valueA:' + data[ 'Value A' ], data.Email ) )? @RickJames ~55k。
标签: javascript mysql sql redis mariadb