摘要:实现元素自动过期这里的自动过期,并没有提供相应的,但是可以使用一下方法来实现。原则上,只应该清除掉到达过期时间的元素,未过期的元素则应该保持。
Redis sortedset实现元素自动过期
这里的自动过期,Redis并没有提供相应的api,但是可以使用一下方法来实现。
需求背景:
给用户返回的文章要求七日内不能重复;文章是存放在java list里边;(这一块就是从db将文章拿出来,然后放入list,放入java内存中)。
分析:
当用户第一次访问的时候,创建一个key值为userId的缓存,value为title列表(文章标题,文章唯一标识),然后给这个key值设置过期时间。
但是这样,到过期时,整个列表都会被清掉。原则上,只应该清除掉到达过期时间的元素,未过期的元素则应该保持。这种方法不能实现预期效果。
使用redis有序集合==sorted Set== 以及对应的==ZREMRANGEBYLEX key min max==命令
移除有序集合中给定的字典区间的所有成员;
redis提供了响应的数据结构和api可以实现: ZADD key score1 member1 [score2 member2] 向有序集合添加一个或多个成员,或者更新已存在成员的分数 通过使用 ZREMRANGEBYSCORE key min max 命令删除有序集合保存在key的最小值和最大值(含)之间的分数的所有元素。 通过定时去调用此命令,即可实现list元素自动过期;
对应相应的实现方案:
使用redis来存储给每个用户下发的文章,对应的key值为userId(用户唯一标识),value为title列表加上相关联的score。
zadd userId score title 这里的score为当前时间的时间戳; ZREMRANGEBYSCORE key 0 score 这里的score设为当前时间前7天对应的时间的时间戳;(具体时间戳可以用java Calander类计算得到) 这里可以启动一个定时任务去定时调用这个命令即可
想要了解更多Redis 有序集合的资料。可参考以下资料:
Redis Zremrangebyscore 命令详解
Redis 有序集合(sorted set)
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/67481.html
摘要:摘要本文介绍了在使用阿里云的开发规范,从键值设计命令使用客户端使用相关工具等方面进行说明,通过本文的介绍可以减少使用过程带来的问题。 摘要: 本文介绍了在使用阿里云Redis的开发规范,从键值设计、命令使用、客户端使用、相关工具等方面进行说明,通过本文的介绍可以减少使用Redis过程带来的问题。 一、键值设计 1. key名设计 (1)【建议】: 可读性和可管理性 以业务名(或数据库名...
阅读 2876·2021-11-23 09:51
阅读 3576·2021-10-13 09:39
阅读 2427·2021-09-22 15:06
阅读 846·2019-08-30 15:55
阅读 3116·2019-08-30 15:44
阅读 1735·2019-08-30 14:05
阅读 3359·2019-08-29 15:24
阅读 2334·2019-08-29 12:44