我正在寻找一种方法来为用户存储项目列表,该列表将在 24 小时内过期。有没有办法使用 Redis 来完成此操作?我在考虑只使用列表并为每个单独的项目设置过期时间,有没有更好的方法?
最佳答案
我使用:
ZADD
- 向有序集中添加新的唯一值。
ZRANGE
- 从集合中获取所有按分数排序的当前值。 (ZREMRANGEBYSCORE
已弃用)
ZREMRANGEBYSCORE
- 从集合中删除分数之间的所有键。
在此解决方案中,分数 = 时间戳
例如:
3 值插入:
ZADD mykey 160 val1 // 1
ZADD mykey 161 val2 // 1
ZADD mykey 120 val3 // 1
获取分数之间的排序值(介于 -infinity 到 400 之间):
ZRANGE mykey -inf 400 BYSCORE // ['val3', 'val1', 'val2']
删除值(介于 -infinity 到 121 之间)- val3 将被删除:
ZREMRANGEBYSCORE mykey -inf 121 // 1
(再次)- 获取得分之间的排序值(介于 -infinity 到 400 之间):
ZRANGE mykey -inf 400 BYSCORE // ['val1', 'val2']
关于caching - 带有过期条目的 Redis 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48044721/