过期键删除策略
* 定时策略:为每个键值设置一个定时器,时间事件到,删除键值,要维护一个时间事件,redis的时间事件是链表,不合适;
* 惰性策略:只有get键时才对键进行过期检查,耗内存,expireIfNeeded();
*定期删除:每隔一段时间从一定数量的数据库中取出一定数量的随机键进行检查,并删除其中的过期键,databasecron()--->activeExpireCycle();
* rdb文件持久化和aof重写,master只保存没过期键,save/bgsave/bgrewriteaof命令不会包含过期键;slave,不管是否过期都保存;
* 复制:1、主服务器在删除一个过期键后,会显性向所有从服务器发送一个del命令,告知从服务器删除这个过期键;2、从服务器对过期键的读命令,都不会删除,正常处理;3、slave只有接到master的del命令才删除过期键。
源码分析