Redis:设置集合的最大元素数

Geo*_* R. 4 redis

在 redis 中,是否可以为集合设置最大数量的元素,以便在使用 时sadd,redis 服务器会阻止该集合包含超过最大数量的元素?例如:

127.0.0.1:6379> SETSIZE KEY 100
Run Code Online (Sandbox Code Playgroud)

提前致谢。

mis*_*ion 5

不,通常的命令是不可能的,但 LUA 脚本是可能的:

local size = redis.call('SCARD', KEYS[1]);
if size < tonumber(ARGV[1], 10) then 
    return redis.call('SADD', KEYS[1], ARGV[2]);
end  
return -1;
Run Code Online (Sandbox Code Playgroud)

  • 如果没有 LUA,不可能以原子方式做到这一点。你错了,@The Real Bill (2认同)