Redis过期数据自动被删除(redis过期了会删除)
Redis是一种基于内存的高性能及高可扩展性的key-value数据储存集群,其支持数据类型包括 string, hash, list, set. 之中它具有非常独特的特性,就是允许在set 或它的子集成员中按照给定值或时间设置数据过期。一旦超时,Redis可以自动清理掉过期的key-value数据。
在Redis中,可以通过命令EXPIRE来设置key的过期时间,命令格式为:EXPIRE key seconds,参数seconds为设定的key的过期时间,单位为秒。例如:
SET key value
EXPIRE key 30
上面的代码相当于设置key为value的值,并且设置该key的过期时间为30秒。
当设置的超时的key的过期时间到达时,Redis会遍历整个key space,然后清理过期的key-value。采用惰性机制,也就是说,在服务时会做检查,检查出那些已经超时的key进行清理,而不是在每次访问时检查。
此外,Redis还支持另一种过期机制,那就是设置定期执行Deleting Keys with a time to live命令,比如:
SET key value
EXPIREAT key 1510999200
上面的代码中,设置key的过期时间为1510999200,这个时间是Unix时间戳,换算成距离现在的时间为2017.11.18下午1点整。这个命令不会每次执行,它只会在指定的时间后清理掉这个key-value数据。
因此,Redis采用惰性机制进行超时数据清理,以及定期执行Deleting Keys with a time to live命令,两者一起形成一种有效的数据过期机制,以保证Redis存储效率。