Redis:有没有办法仅在集合存在时才添加到排序集?

标签 redis sortedset

我想知道是否有一种方法可以检查 redis 排序集是否已经存在。如果有序集存在,则向其中添加元素,否则什么也不会发生。

由于使用pipeline执行此操作,因此每次从redis中检查排序集是否存在都会花费大量成本。

最佳答案

您可以在管道中运行 Lua 脚本 - 以下脚本会将所有参数添加到提供的键(前提是该键存在):

local exists = redis.call('EXISTS', KEYS[1])
if exists == 1 then
  redis.call('ZADD', KEYS[1], unpack(ARGV))
end

注意:这里没有错误检查(即键的类型是 zset,参数有效......)以节省 CPU 周期并简化示例。也没有返回代码 - 如果需要,请添加它。

关于Redis:有没有办法仅在集合存在时才添加到排序集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38136907/

相关文章:

node.js - 流量高峰

redis - 如何在本地主机 WAMP 上使用 Redis

java - 使用 Java 8 Streams 对 Map 的值进行排序 (Set -> SortedSet)

node.js - 在 nodejs 上循环 redis 返回的 promise

redis - ZREMRANGEBYRANK 与 ZREMRANGEBYSCORE 之间的区别

Redis 哈希 : Key name compression

docker - 在 Docker 文件中运行命令

caching - 高流量、多应用下如何更新分布式缓存?

java - SortedSet::removeAll( headSet ) 失败,但从 headSet 派生另一个集合成功。为什么?

java - SortedSet、数组、可序列化的序列化问题