内存配置
默认配置:Redis默认不限制内存使用(maxmemory 0
),会尽可能占用所有可用内存。生产环境中必须手动配置上限,避免系统资源耗尽。
手动配置:
-
动态配置(redis服务重启后失效): 启动redis后,连接redis客户端,通过命令配置:
-
设置内存:
config set maxmemory 2GB
-
查看内存:
config get maxmemory
(查看到的内存单位是字节)
-
-
静态配置(永久配置):
在
redis.conf
(在win系统中是redis.windows.conf
)中通过maxmemory <bytes>
指定:maxmemory 4GB
如图:
查看当前内存占用:
在redis客户端中通过命令进行查看:INFO memory
淘汰策略
Redis 作为内存数据库,当内存达到 maxmemory
配置的限制时,会根据设定的淘汰策略(Eviction Policy)自动删除部分数据,以腾出空间存储新数据。
Redis 支持 8 种淘汰策略,分为两大类:针对所有键的策略和仅针对带过期时间键的策略
策略 | 行为 |
---|---|
noeviction | 内存不足时,直接拒绝写入请求(默认策略)。 |
volatile-lru | 从 设置了 TTL 的键 中,淘汰 最近最少使用(LRU) 的键。 |
volatile-lfu | 从 设置了 TTL 的键 中,淘汰 最不经常使用(LFU) 的键(Redis 4.0+)。 |
volatile-random | 从 设置了 TTL 的键 中,随机淘汰一个键。 |
volatile-ttl | 从 设置了 TTL 的键 中,淘汰 剩余存活时间最短(TTL 最小) 的键。 |
allkeys-lru | 从 所有键 中,淘汰 最近最少使用(LRU) 的键。 |
allkeys-lfu | 从 所有键 中,淘汰 最不经常使用(LFU) 的键(Redis 4.0+)。 |
allkeys-random | 从 所有键 中,随机淘汰一个键。 |
查看淘汰策略
通过config get maxmemory-policy
命令查看
配置redis淘汰策略
1. 动态修改(无需重启 Redis)
在 Redis 客户端中使用config set maxmemory-policy <policy>
命令,可以动态修改淘汰策略。例如,将淘汰策略修改为allkeys-lru
:
config set maxmemory-policy allkeys-lru
执行成功后会返回OK
。不过这种修改方式只在 Redis 服务器重启前有效,重启后会恢复为配置文件中设置的策略。
2. 静态修改(通过配置文件修改,重启后生效)
打开 Redis 配置文件redis.conf
,找到并修改maxmemory-policy
参数。例如:
# 修改为你需要的淘汰策略
maxmemory-policy volatile-ttl
如图: