【Redis】Redis 的过期策略以及内存淘汰机制详解
    		       		warning:
    		            这篇文章距离上次修改已过425天,其中的内容可能已经有所变动。
    		        
        		                
                Redis 的过期策略和内存淘汰机制是为了保证 Redis 的高效和可控性。
过期策略:
Redis 采用定时删除和惰性删除相结合的方式来处理键的过期。
- 定时删除:Redis 每个 100ms 检查是否有过期的键,有的话就删除。
 - 惰性删除:当客户端访问一个键时,Redis 会检查这个键是否过期,如果过期就删除。
 
内存淘汰机制:
当 Redis 的内存超过 maxmemory 设置的值时,会根据配置的淘汰策略(maxmemory-policy)来淘汰一些键。
- noeviction:不进行淘汰,当内存不足时,新写入命令会报错。
 - allkeys-lru:当内存不足以写入数据时,使用最近最少使用算法(LRU)来淘汰键。
 - volatile-lru:只对设置了过期时间的键进行 LRU 淘汰。
 - allkeys-random:随机淘汰键。
 - volatile-random:随机从设置了过期时间的键中淘汰。
 - volatile-ttl:淘汰即将过期的键,优先淘汰 TTL 较短的键。
 
实例代码:
设置键的过期时间:
SET key value EX 10设置 maxmemory 和 淘汰策略:
# 设置最大内存为 2GB
CONFIG SET maxmemory 2gb
# 设置淘汰策略为 allkeys-lru
CONFIG SET maxmemory-policy allkeys-lru查看当前的淘汰策略:
CONFIG GET maxmemory-policy以上是 Redis 过期策略和内存淘汰机制的简要说明和实例代码。
评论已关闭