内存回收策略
删除过期键对象
- 惰性删除 :当键对象被访问时,才检查是否过期,如果过期则删除。
- 定时任务删除 :定时任务检查键对象是否过期,如果过期则删除。每秒10次
内存溢出控制策略
- volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键值对中,使用LRU(Least Recently Used,最近最少使用)算法进行淘汰。
- volatile-lfu:在设置了过期时间的键值对中,使用LFU(Least Frequently Used,最少使用)算法进行淘汰。LFU算法会追踪键值对的访问频率,并淘汰访问频率最低的键值对。
- volatile-random:在设置了过期时间的键值对中,随机选择并淘汰一个键值对。
- volatile-ttl:在设置了过期时间的键值对中,选择剩余生存时间(TTL)最短的键值对进行淘汰。 以上四种策略都只在设置了过期时间的键中进行淘汰。如果没有键可以淘汰,则会返回错误。
除了针对设置了过期时间的键的策略外,Redis还提供了以下两种策略,它们会在所有键中进行淘汰:
- allkeys-lru:在所有键中,使用LRU算法进行淘汰。
- allkeys-lfu:在所有键中,使用LFU算法进行淘汰。
- allkeys-random:在所有键中,随机选择并淘汰一个键值对。 另外,Redis还提供了一个不淘汰的策略:
- noeviction:当内存不足以容纳新写入数据时,新写入操作会报错,不会淘汰任何键值对
输入缓冲区
大小可以动态扩充,最大不能超过1GB
复制缓冲区
默认大小为1MB,由主服务器维护