世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。
1.RDB:redis每次生成新的二进制文件时,就会对键进行检查,如果已过期,则该键不会被写入到新创建的二进制文件中;在加载二进制文件时也是一样,如果检查到文件中的键已过期,则该键不会被加载到内存中。
2.AOF:在进行AOF时对已过期的键在插入时不会进行检查,只有redis服务器通过惰性删除或过期删除将过期的键删除时,AOF才会追加一条该键的DEL。但是在AOF文件Rewrite时,会进行过期键检查,凡是过期的键不会加入到rewrite的文件中。
3.复制:对于主从复制,只有主服务器删除了过期键,才会同步到从服务器,而从服务器本身是不会对过期键进行处理的,这样保证了主从服务器数据的一致性。如果客户端向从服务器请求一个未被删除的过期键,从服务器会将这个过期键原值返回,不做任何操作。