diff --git a/Middleware.md b/Middleware.md index 34a9025..d1477ec 100644 --- a/Middleware.md +++ b/Middleware.md @@ -322,14 +322,25 @@ expires字典会保存所有设置了过期时间的key的过期时间数据, ## 内存淘汰策略 -Redis的内存淘汰策略是指在Redis的用于缓存的内存不足时,怎么处理需要新写入且需要申请额外空间的数据。 - -- **volatile-lru**:从已设置过期时间的数据集(server.db[i].expires)中挑选**最近最少使用**的数据淘汰 -- **volatile-ttl**:从已设置过期时间的数据集(server.db[i].expires)中挑选**将要过期**的数据淘汰 -- **volatile-random**:从已设置过期时间的数据集(server.db[i].expires)中**任意选择**数据淘汰 -- **allkeys-lru**:从数据集(server.db[i].dict)中挑选**最近最少使用**的数据淘汰 -- **allkeys-random**:从数据集(server.db[i].dict)中**任意选择数**据淘汰 -- **no-enviction(驱逐)**:禁止驱逐数据,**不删除**的意思 +Redis达到最大内存限制时(`maxmemory`),Redis根据配置文件redis.conf中配置的 `maxmemory-policy` 的策略,来决定具体的行为。 + +```properties +# 配置最大内存限制 +maxmemory 1000mb +# 配置淘汰策略 +maxmemory-policy volatile-lru +``` + +支持的淘汰策略包括: + +- **volatile-lru**:从已设置过期时间的数据集中挑选**最近最少使用**的数据淘汰(淘汰**最长时间**没有被使用) +- **volatile-lfu**:从已设置过期时间的数据集中挑选某段时间内**最近最不经常**的数据淘汰(淘汰一段时间内**使用次数**最少) +- **volatile-ttl**:从已设置过期时间的数据集中挑选**将要过期**的数据淘汰 +- **volatile-random**:从已设置过期时间的数据集中**任意选择**数据淘汰 +- **allkeys-lru**:从所有数据集中挑选**最近最少使用**的数据淘汰 +- **allkeys-lfu**:从所有数据集中选择某段时间内内**最近最不经常**的数据淘汰 +- **allkeys-random**:从所有数据集中**任意选择数**据淘汰 +- **noenviction(驱逐)**: 不删除策略,达到最大内存限制时,如果需要更多内存,直接返回错误信息