思考
1、生成/加载RDB文件、AOF写入、AOF重写、主从复制时,对过期的key会如何处理?
2、当访问过期key时,redis会如何处理?
RDB文件生成、加载时对过期key的处理
生成RDB文件时,会略过已过期的key
加载RDB文件时,若为主服务器,会略过过期key,若为从服务器,则不会略过过期key
AOF写入
过期key没被定期删除/惰性删除,AOF文件不会有任何改变
定期删除:定期查询要过期的key,如果有删除该key(AOF文件中append一条DEL指令)
惰性删除:已过期key存在redis中,没人访问,一直存在,有人访问,发现过期,会DEL,再返回null
Redis(6)删除策略(定时删除、惰性删除、定期删除)和数据逐出策略
AOF重写
过期的key会被忽略
主从复制
主从模式下,从服务器过期的key不会get后删除
该模式下的删除由主服务器控制,当对主服务器get过期key时,就会出现惰性删除,并将该DEL指令发送给从服务器,从服务器就会删除对应key
小结
RDB文件生成:忽略过期key
EDB文件加载:主服务器会忽略过期key,从服务器不会忽略
AOF写入:惰性删除/定期删除时会写入DEL过期key指令
AOF重写:忽略过期key
主从复制:主服务器控制过期key的DEL,执行后会发送指令给所有子服务器,实现DEL操作