Py学习  »  Redis

redis:清理zset成员

Trace • 4 年前 • 620 次点击  

我目前正在学习Redis,有以下情况:

所以我有一个按google place 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是否有执行这种清理的推荐方法。或者,我可以为此创建一个调度程序,但我不希望这样做。

所以我有一个按google place 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是否有执行这种清理的推荐方法。或者,我可以为此创建一个调度程序,但我不希望这样做。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/37892
 
620 次点击  
文章 [ 1 ]  |  最新文章 4 年前
rainhacker
Reply   •   1 楼
rainhacker    5 年前

不幸的是,Redis排序集没有提供开箱即用的功能。如果排序集允许具有可配置收回策略的max-size属性,则可以避免一些额外的工作。

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

如果没有这样的特性,您提到的两种方法是正确的。

  1. 您可以用事务替换插入:插入、检查大小、删除if>50

  2. 检查装置尺寸并定期修整的螺纹。