2.1 redis过期设置原理
2018-07-27 本文已影响6人
9cc222f2bb0a
1. 所有的过期指令最终都变成了PEXPIREAT指令
2. redis保存一份过期字典,键是一个指针,指向某个键对象,值是过期时间,一个毫秒精度的时间戳。过期字典与键空间中的键指向的是一个地址,不存在空间浪费。
过期键删除策略:
1. 定时删除。每次创建一个过期时间的同时,创建一个定时器。这种方式内存最友好,但是CPU最不友好。
2. 惰性删除。每次使用时检查是否删除。内存最不友好,CPU最友好。可能会存在大量无用键。
3. 定期删除。
redis采用的是惰性删除跟定期删除。
RDB操作:
生成RDB文件时检查键,已过期的不存储。
载入RDB文件时,按照以下策略进行处理:
1. 如果是主服务器,会对键进行检查,已过期的忽略。
2. 如果是从服务器,都会载入,但是主服务器在数据同步时,会将数据库进行清空,所以即便全部载入,也不会有什么影响。
AOF操作:
写入:如果某个键已经过期,但是并没有被惰性或定期删除,那么AOF文件不会处理,当被删除之后,程序会在AOF文件中追加一条DEL指令。
重写:与RDB类似。
复制:
复制模式下,过期键的处理完全由主服务器控制。
重点回顾: