redis里能不能针对set数据的每个member设置过期时间?
想要使用redis的set数据集记录一组数据,每一条数据的过期时间都是30天,但这些数据不是同一天加进去的。也就是说这组数据不会在同一时间过期。这样就不能对set的key进行过期时间设定,因为一旦设置了key的过期时间,所有的member会同时过期。但是在redis的语法里又没有发现针对每个member的过期时间设定方法。请问大家有没有什么好的方法解决这个问题?
-
用hash,放入的member的对象记录放入redis的时间和真实数据,获取的时候逻辑判断是否过期.
-
存的时候,只能存不过期的,同时存入时间戳,然后取的时候,根据时间戳代码上操作。
-
set的score存储时间值,每天定时扫描一下哪些过期的
-
第一种方法,拆分成多个key,每个key设置过期时间。第二种方法改为hashMap存储,加一个过期时间的字段。
-
不能。可以用sorted set,把要过期的member和key的信息放在sorted set的member里,把过期时间放在score中。跑个任务用zrangebyscore遍历就行了。用sorted set好处是只需要遍历过期的member,不用扫描整个过期member集合。