我想在redis中存储ID列表(大约100,000个)。
因此列表可能如下所示:332 99 91 78 10 98989 18221
我还需要能够检查此列表中是否还存在多个ID。
e.g。我需要能够立即检查列表中是否存在99和332和41。
我如何存储此类数据?
答案 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
运行。