Redis:清理ZSET成员

时间:2018-11-14 19:52:28

标签: redis

我正在研究Redis,并遇到以下情况:

enter image description here

所以我所拥有的是按Google地点ID排序的集合,所有帖子的排序方式是从最近到较旧。 请求的第一页获取帖子<当前时间戳。 将游标发送到后端时,该游标是一个简单的时间戳,指示从何处获取ZSET中的下一个帖子。
通过地点ID检索帖子的查询为:

ZREVRANGEBYSCORE <gplaceId> <cur_timestamp> -INF WITHSCORES LIMIT <offset:timestamp as from where to fetch> <count:number of posts>

我的问题是,清理ZSET成员的推荐方法是什么。
由于我想将Redis用作缓存,因此我希望将每个位置的帖子数限制为最多50个。例如,当已经有50个帖子添加到集合中而获得新帖子时,我想删除最后一个帖子从集合。

当然,我意识到我可以对每个插入进行手动检查并照此执行操作,但是我想知道Redis是否具有推荐的执行此清理的方法。另外,我可以为此创建一个调度程序,但是我宁愿不必这样做。

1 个答案:

答案 0 :(得分:0)

不幸的是,Redis排序集不具有开箱即用的功能。如果排序后的集允许最大大小属性和可配置的逐出策略-您可以避免一些额外的工作。

请参阅以下相关问题: How to specify Redis Sorted Set a fixed size?

在没有这种功能的情况下,您提到的两种方法是正确的。

  1. 您可以用事务替换插入:插入,检查大小,如果大于50则删除

  2. 检查集合大小并定期修剪的线程