一 数据持久化
1.rdb
就是在指定的时间间隔内将内存中的数据集快照写入到磁盘(实际上就是fork一个子进程,先将数据集写入一个零时的文件,写入成功了,再替换之前的文件)
2.aof
以日志的形式记录操作的命令,是记录到文件的末尾。
二 数据过期的原理
1 定时删除
设置key的时候,为key创建一个定时器,定时器在key的过期时间来临的时候,对Key进行删除
(保证内存被尽快释放,但是key 过多的话,这样会占用很多的cpu)
2 定期删除
每隔一段时间执行一次删除过期key的操作(减少对cpu的消耗,但是对内存不是很友好,这个需要合理的去设置删除操作的时长和删除频率,默认是hz=10s)
redis 默认会每秒进行10次过期扫描,
a 从过期字典key中随机获取20个key
b 删除过期的key
c 过去过期的key超过1/4,就复新步骤a
3 懒汉式删除
key过期的时候不删除,在每次去获取key的时候去判断一下是否过期,若过期,则删除,返回null(CPU的影响最小,但是可能会造成内存泄露)