我应该如何在redis中存储一长串ID?

时间:2017-03-30 19:11:26

标签: redis

我想在redis中存储ID列表(大约100,000个)。

因此列表可能如下所示:332 99 91 78 10 98989 18221

我还需要能够检查此列表中是否还存在多个ID。

e.g。我需要能够立即检查列表中是否存在99和332和41。

我如何存储此类数据?

2 个答案:

答案 0 :(得分:1)

使用哈希,其中每个字段都是一个id,值为空字符串,例如

HMSET ids 332 "" 99 "" 91"" 78 "" 10 98989 "" 18221 ""

执行会员资格检查:

HMGET ids 99 332 41

对于每个现有值,回复将具有空字符串,对于不存在的值,回复将为空。

答案 1 :(得分:0)

您还可以使用SET来存储这些ID。虽然SISMEMBER命令只能检查是否存在单个成员,但您可以编写一个lua脚本来检查一次调用中是否存在多个键。

-- multi-sismember.lua
for i, v in ipairs(ARGV) do
    if (redis.call('sismember', KEYS[1], v) == 0) then return false end
end
return true

将其作为redis-cli --eval multi-sismember.lua key , 99 332 41运行。