欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

redis里能不能针对set数据的每个member设置过期时间? 有大用

redis里能不能针对set数据的每个member设置过期时间?

想要使用redis的set数据集记录一组数据,每一条数据的过期时间都是30天,但这些数据不是同一天加进去的。也就是说这组数据不会在同一时间过期。这样就不能对set的key进行过期时间设定,因为一旦设置了key的过期时间,所有的member会同时过期。但是在redis的语法里又没有发现针对每个member的过期时间设定方法。请问大家有没有什么好的方法解决这个问题?

  • 用hash,放入的member的对象记录放入redis的时间和真实数据,获取的时候逻辑判断是否过期.
    评论(0)引用此答案举报 (2014-09-23 14:50)

    1
  • 存的时候,只能存不过期的,同时存入时间戳,然后取的时候,根据时间戳代码上操作。
    评论(0)引用此答案举报 (2014-09-24 19:26)

    1
  • ydx2008
    set的score存储时间值,每天定时扫描一下哪些过期的
    评论(0)引用此答案举报 (2014-09-25 10:16)

    1
  • 牟宗民
    第一种方法,拆分成多个key,每个key设置过期时间。第二种方法改为hashMap存储,加一个过期时间的字段。
    评论(0)引用此答案举报 (2014-09-25 19:25)

    1
  • catch23

    不能。可以用sorted set,把要过期的member和key的信息放在sorted set的member里,把过期时间放在score中。跑个任务用zrangebyscore遍历就行了。用sorted set好处是只需要遍历过期的member,不用扫描整个过期member集合。


普通分类: