Redis 缓存的淘汰策略
给Redis设置一些字节大小去限制内存使用,当Redis达到所设置的内存大小,redis将会删除一些Key,根据所制定的内存淘汰策略。
如果Redis不能删除key根据所给的策略,或者如果当前的淘汰策略是novication,有新的Key进来的时候,Redis将回出错,比如set操作 LPUSH 等等。 只能执行get操作。简而言之:就是当redis把内存用完时,只能读取里面的数据不能写入了,写入将会收到错误。
当Redis使用LRU 、LFU 缓存 是行而有效的。他们用完会淘汰部分Key。
警告:
文档中说的比较多:简而言之就是如果你有集群副本,你的内存大小限制要小鱼RAM 给复制的缓冲区留一些空间。
maxmemory 2048M
MAXMEMORY POLICY 内存淘汰策略
定义当Redis达到所设置的最大内存,redis将会如何选择要淘汰的key
可选的有8中:
- volatile-lru 使用LRU算法淘汰设置了超时属性的Key
- allkeys-lru 使用LRU淘汰所有的key
- volatile-random 使用随机的算法太太设置超时属性的key
- allkeys-random 使用随机台套所有的key
- volatile-lfu
- allkeys-lfu
- valatile-ttl 删除最近将要过期的Key 如果没有 回退到noevicationcelve
- noevication 在写操作的时候如果在达到最大值的,返回错误。
LRU Least Rescently Used 最近最少使用
LFU least Frequently Used 最少使用
redis 默认的淘汰策略时
maxmemory-policy noeviction
调优
在《Redis 开发与运维》中说如果要设置内存的大小 maxmemory > usedmemory 就是让避免频繁的内存溢出,而去回收内存。
关于LRU 跟LFU https://www.cnblogs.com/sddai/p/9739900.html