【问题标题】:Redis Server Side Script - ZREM multiple values at onceRedis 服务器端脚本 - 一次 ZREM 多个值
【发布时间】:2015-09-04 19:36:14
【问题描述】:

我正在构建一个 Redis 服务器端脚本,但缺乏 Lua 经验让我有点卡住了。

基本上有一个大的“主”排序集(包含约 1,000 个值),我想删除在较小的“删除”集(包含约 100 个值)中找到的任何键。想想 sdiffstore,但“主”集中的成员分数很重要。

一个简单的例子:

"main"
ZADD main 6 "one"
ZADD main 7 "two"
ZADD main 8 "three"
ZADD main 9 "four"
ZADD main 10 "five"

"remove"
ZADD remove "two"
ZADD remove "four"

desired output (stored in a sorted set):
6 "one"
8 "three"
10 "five"

所以在lua服务器端脚本:

--这行得通

redis.call('zrem','main', 'two','four')

--这不是

local temp = redis.call('smembers','remove')    
redis.call('zrem','main', temp )

我已经尝试了多次我的语法迭代,但都无济于事。有任何想法吗?

我希望避免将“删除”成员转换为某种字符串或循环,并且一次删除一个成员。

谢谢

【问题讨论】:

    标签: lua redis server-side


    【解决方案1】:

    如果我正确理解您的问题,您应该可以使用unpack 函数:

    local temp = redis.call('smembers','remove')    
    redis.call('zrem','main', unpack(temp))
    

    unpack 会将表格“解包”到其成员中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-15
      • 2019-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多