凡科网建站怎么样,网站多数关键词,北京网站建设一站式服务,关键词难易度分析我们在set key的时候可以设置key的过期时间#xff0c;哪redis是怎么处理过期的key的呢#xff1f;
有三种过期策略
定时过期#xff1a;每个设置过期时间的key会创建一个定时器#xff0c;到过期时间就会立即对key进行清除。该策略可以立即清除过期的数据#xff0c;对…我们在set key的时候可以设置key的过期时间哪redis是怎么处理过期的key的呢
有三种过期策略
定时过期每个设置过期时间的key会创建一个定时器到过期时间就会立即对key进行清除。该策略可以立即清除过期的数据对内存很友好但是会占用大量的CPU资源去处理过期的数据从而影响缓存的响应时间和吞吐量。惰性过期 只有当访问一个key时才会判断该key是否已过期过期则清除。该策略可以最大化地节省CPU资源却对内存非常不友好。极端情况可能出现大量的过期key没有再次被访问从而不会被清除占用大量内存。定期过期 每隔一定的时间会扫描一定数量的数据库的expires字典中一定数量的key并清除其中已过期的key。该策略是前两者的一个折中方案。通过调整定时扫描的时间间隔和每次扫描的限定耗时可以在不同情况下使得CPU和内存资源达到最优的平衡效果。expires字典会保存所有设置了过期时间的key的过期时间数据
Redis中同时使用了惰性过期和定期过期两种过期策略。
我们redis会先使用定期过期在我们设置的过期时间下随机抽取一部分的key进行检查和删除那有一些老是没有被抽到呢这是惰性过期就派上用场了我们在使用key时会先检查是否已过期
如果我们还是漏掉了很多过期的key就会有很多过期key积压在内存我们redis就会使用8种内存淘汰策略降低内存
volatile-lru从设置了过期时间的key中使用LRU最近最少使用算法进行淘汰allkeys-lru从所有key中使用LRU最近最少使用算法进行淘汰。volatile-lfu从设置了过期的key中使用LFU算法进行删除key。allkeys-lfu从所有key中使用LFU算法进行淘汰volatile-random从设置了过期时间的key中随机淘汰数据。allkeys-random从所有key中随机淘汰数据。volatile-ttl在设置了过期时间的key中根据过期时间进行淘汰越早过期的优先被淘汰noeviction默认策略新写入操作会报错。