首页 > 解决方案 > 从redis中的集合A中删除两个集合A和B的交集

问题描述

我在 Redis 中有两组 - ProcessedUrls 和 PendingUrls。我想在一个 redis 查询中执行以下操作:从 Pendings 集中删除挂起和已处理集中的所有键,然后返回 Pending 集中的 100(或任何其他数字 - X)值。

我应该通过 Lua(redis 服务器端脚本语言)吗?我认为有一个更简单的方法。

谢谢你的帮助

标签: redis

解决方案


您可以使用该SDIFFSTORE命令获取差异项并将其保存回待处理集:

SDIFFSTORE PendingUrls PendingUrls ProcessedUrls

然后您可以使用SRANDMEMBER PendingUrls N命令随机获取N待处理集中的成员。

如果你想让这两个操作成为原子操作,请将它们包装到 Lua 脚本或事务中。


推荐阅读