有没有办法用一个命令增加zset的所有分数?这就是我想做的事情:
ZADD myzset 1 "first"
ZADD myzset 2 "second"
ZINCRBY myzset 2 "*"
ZRANGE myzset 0 -1 WITHSCORES
1) "first"
2) "3"
3) "second"
4) "4"
Run Code Online (Sandbox Code Playgroud)
但是,ZINCRBY myzset 2 "*"不是这样的.
没有命令,ZINCRBY一次只能增加1个成员.因此,如果您想以原子和快速的方式完成此任务,则需要执行Lua脚本.哪个应该看起来像这样(首先你得到排序集的所有成员,然后迭代它们并增加分数):
local zsetMembers = redis.call('zrange', KEYS[1], '0', '-1')
for k,member in pairs(zsetMembers) do
redis.call('zincrby', KEYS[1], 1, member)
end
Run Code Online (Sandbox Code Playgroud)
您可以使用该EVAL命令将此脚本推送到Redis .
| 归档时间: |
|
| 查看次数: |
1137 次 |
| 最近记录: |