当前位置: 首页 > 面试题库 >

有没有很好的方法来支持Redis Sorted Set中的pop成员?

谈阎宝
2023-03-14
问题内容

是否有很好的方法来支持Redis Sorted Set中的pop成员,就像List的api LPOP一样?

我从Redis Sorted Set弹出消息中发现的是使用ZRANGE +
ZREM,但是它不是线程安全性,并且当多线程同时从不同主机访问它们时需要分布式锁。

请提出建议,是否有更好的方法可以从排序集中弹出成员?


问题答案:

您可以编写一个Lua脚本来完成这项工作:将这两个命令包装在一个Lua脚本中。Redis确保Lua脚本以原子方式运行。

local key = KEYS[1]
local result = redis.call('ZRANGE', key, 0, 0)
local member = result[1]
if member then
    redis.call('ZREM', key, member)
    return member
else
    return nil
end


 类似资料:
  • 问题内容: 有没有很好的方法来获取下一个星期三的日期?也就是说,如果今天是星期二,我想获取本周星期三的日期;如果今天是星期三,我想知道下星期三的日期;如果今天是星期四,我想获取下周的星期三日期。 谢谢。 问题答案: 基本算法如下: 获取当前日期 取得星期几 与周三找到不同 如果差异不是正数,则加7(即坚持下一个到来/将来的日期) 增加差异 这是一个片段,展示了如何使用: 相对于我现在的位置,上述代

  • 问题内容: 是否有一个很好的方法来Map 获取和忽略案件? 问题答案: TreeMap扩展了Map并支持自定义比较器。 字符串提供默认的不区分大小写的比较器。 所以: 比较器不考虑区域设置。在其JavaDoc中阅读有关它的更多信息。

  • 除了把它们全部输入外,还有没有更好的方法在字符串中列出它们?

  • 除了把它们全部输入外,还有没有更好的方法在字符串中列出它们?

  • 假设我有一个用户模式/模型,用户有一个朋友列表。Mongoose希望您将好友列表(外键/ObjectID类型)存储为数组,对吗?这意味着如果我想通过ID找到我的朋友,Mongoose将搜索数组,直到找到具有我想要的ID的朋友的第一个实例。那似乎真的是时间低效,不是吗?有更好的办法吗?

  • 我做这个迭代是为了对DataFrame的每个值执行不同的函数: 作为xxx一个2列数据帧