redis

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类似。

复制:

    复制模式下,过期键的处理完全由主服务器控制。

重点回顾:

上一篇 下一篇

猜你喜欢

热点阅读