Redis的键可以设置生存时间和过期时间,这个过期时间是如何设置的呢,可以简单看下:
通过 EXPIRE 命令或者 PEXPIRE 命令,客户端可以以秒或者毫秒精度为数据库中的某个键设置生存时间(TTL),在经过制定的秒数或者毫秒数之后,服务器就会自动删除生存时间为0的键。
一个键过期了,什么时候会被删除呢?这个问题有三种可能的答案,分别代表了三种不同的删除策略:
Redis实际上使用的是惰性删除和定期删除,惰性策略,大家可以仔细研究一下。
在创建一个新的RDB文件时,程序会对数据库中的键进行检查,已经过期的键不会被保存在新创建的RDB文件中。
当服务器是主服务器时,RDB文件中过期的键将被忽略;当服务器是从服务器时,RDB文件中的过期的键将被会写入数据库。
当服务器以AOF持久化运行时,如果数据库的某个键已经过期,但是还没有被删除,那么AOF文件不受影响。
在执行AOF重写时,程序会对数据库中的键进行检查,已经过期的键不会被保存在重写的AOF文件中。
Redia对键的过期删除主要是定期删除和惰性删除两种。