如何从已排序集中删除所有属于不同未排序集的值?

我正在尝试使用lua脚本进行删除,但我不知道出了什么问题

import redis
r = redis.Redis(host='localhost',port=6379)
pipe = r.pipeline(transaction = False)
lua = """
local env = redis.call('smembers', 'user_key')
redis.call('zrem','another_key', unpack(env))
"""
p = r.register_script(lua)
p(client=pipe)
点赞
用户3160475
用户3160475

localLua 关键字 用于声明局部变量。在 Redis 的 Lua 脚本引擎中,为了防止沙盒中的变量造成麻烦,所有变量都必须是局部的(请参阅文档 https://redis.io/commands/eval#global-variables-protection)。

你的脚本只是缺少一个变量名 - 以下可能会更好:

import redis
r = redis.Redis(host='localhost',port=6379)
pipe = r.pipeline(transaction = False)
lua = """
local l = redis.call('smembers' 'user_key')
redis.call('zrem', unpack(l))
"""
p = r.register_script(lua)
p(client=pipe)

此外,在我看来,这里没有真正需要使用 pipeline。

2015-05-29 14:05:14