我正在寻找一种为用户存储项目列表的方法,该方法将在24小时内过期。有没有办法使用Redis做到这一点?我当时想只使用列表并为每个单独的商品设置有效期,是否有更好的方法?
不,您不能为LIST. 您只能为整个LIST.
为了实现您想要的,您需要为每个项目设置一个键:
SET user1:item1 value EX 86400
SET uesr1:iter2 value EX 86400
SET user2:item1 value EX 86400
Run Code Online (Sandbox Code Playgroud)
要获取指定用户的所有项目,您可以使用SCAN带有模式的命令(或使用Keyspace Notification来获得更好的性能,但工作更复杂):
SCAN 0 MATCH user1:*
Run Code Online (Sandbox Code Playgroud)
如已接受的答案所述,Redis中的过期仅在键级别执行-嵌套元素不能过期。
要实现带有过期元素的列表,可以使用Sorted Set数据结构。每个成员的得分应为当前纪元,因此您将保留插入顺序。如果值(成员)不是唯一的,则通过连接时期来使它们如此,例如:
ZADD user1:items 1514822755 1514822755:value
ZADD user1:items 1514822758 1514822758:value
Run Code Online (Sandbox Code Playgroud)
要“过期”项目,请调用ZREMRANGEBYSCORE,-inf并从当前纪元减去24小时。
| 归档时间: |
|
| 查看次数: |
1982 次 |
| 最近记录: |