【发布时间】:2015-08-24 15:19:18
【问题描述】:
我在 sql 中有一个包含 3 列的表:BIGINT StartNumber, BIGINT EndNumber, BIGINT LocationId,我需要能够做这样的事情
Select LocationId where StartNumber < @number and EndNumber > @number.
例如:
StartNumber EndNumber LocationId
1 5 1
6 9 1
10 16 2
当我有 @number = 7 时,我应该得到 LocationId = 1
如何在 redis 中做到这一点?
我正在考虑将此表移动到 redis,使用排序集和ZRANGEBYSCORE,但它对我不起作用:
1) 当我使用 ZADD key score member [score] [member] 时,即使使用 nx 参数,我也无法添加具有相同成员和不同分数的 2 个元素:
zadd myset nx 1 "17" 2 "17" - 它将添加一个元素,然后更新其分数,而不是添加两个元素。
2)当我添加这个时:zadd set1 2 "a" 4 "b" 6 "c" 10 "d" 然后尝试做 zrangebyscore set1 3 3 (想要获得分数包括 3 的成员)我得到空结果
附:所有命令都在redis网站的示例页面上执行。
【问题讨论】:
-
那么添加两次或多次不同分数的会员的目的是什么?
-
@MatíasFidemraizer in sql 我有一系列与位置 id 相关的数字,例如从 1 到 5 的数字与 locationid = 1 相关,并且作为排序集,每个元素只能有 2 列(得分-成员)我想,我需要为 sql 表中的每一行添加元素,例如 StartIp - Location 和 EndIp - Location。或者我应该像下面建议的那样创建 2 个排序集
标签: redis