当有 key 设置了过期时间,就会有删除策略
以 CPU 定时执行的方式换 Redis 内存(因为会使用轮询的方式一直耗用 CPU 资源),及时性不高,但是内存不会浪费
在 get 的时候,先判断 key 是否会过期,如果过期了,会进行删除,会导致有大量的垃圾数据占用内存空间(因为过期的数据在没有进行 get 时,就会一直存在)
hz 10
serverCron() --> databaseCron() --> activeExpireCyle()
三个函数current_db 用于记录 activeExpireCyle() 进入哪一个 expire[ * ] 执行,如果时间到了,那么下次根据 current_db 继续执行
Reids采用的是惰性删除 + 定期删除两种策略结合使用。
当 Redis 内存满了,在进行 set 的时候,就会触发淘汰策略
LRU(Least recently used):最近最少使用,针对时间
LFU(Least frequently used):最近最不频繁使用,针对访问次数