我需要从redis缓存中删除一个条目, 但只有它匹配某个值。
如果可能,我想避免首先获取值,检查服务器,然后删除的开销。
我在删除命令中看不到任何选项,我根据值检查限制删除。
答案 0 :(得分:1)
你可以使用Lua在Redis中做到这一点(更少考虑客户端和编程语言的选择) - 脚本只是避免客户端 - 服务器来回的东西。这是一个示例脚本,它检查String值是否相等,如果是,则删除密钥:
local key = KEYS[1]
local val = ARGV[1]
local cur = redis.call('GET', key)
if cur == val then
return redis.call('DEL', key)
else
return 0
end
要了解有关Redis中Lua的更多信息,请查看EVAL
's documentation。