Redis的内存管理可以通过配置文件redis.conf
或启动命令行参数来实现。以下是一些关键配置项,用于控制Redis的内存使用和溢出行为:
maxmemory:设置Redis可以使用的最大内存量。当内存使用达到此限制时,Redis将根据maxmemory-policy
配置项指定的策略来处理新的写入操作。
maxmemory <bytes>
例如,设置最大内存为500MB:
maxmemory 500mb
maxmemory-policy:当达到最大内存限制时,指定Redis应如何处理新的写入操作。可选值包括:
noeviction
(默认):不驱逐任何键,新的写入操作将返回错误。allkeys-lru
:驱逐最近最少使用的键。volatile-lru
:仅驱逐设置了过期时间的键中最近最少使用的键。allkeys-random
:随机驱逐任意键。volatile-random
:随机驱逐设置了过期时间的键。volatile-ttl
:驱逐剩余生存时间(TTL)最短的键。例如,设置当达到最大内存限制时,驱逐最近最少使用的设置了过期时间的键:
maxmemory-policy volatile-lru
minslaves-to-write 和 minslaves-max-lag:这两个配置项用于实现Redis的主从复制中的数据冗余。它们不直接影响内存管理,但可以确保在主服务器故障时,从服务器上有足够的数据副本。
minslaves-to-write <number>
minslaves-max-lag <milliseconds>
例如,要求至少有2个从服务器确认写入操作,并且从服务器的最大延迟为5秒:
minslaves-to-write 2
minslaves-max-lag 5000
stop-writes-on-bgsave-error:当设置为yes
时,如果在后台保存过程中出现错误,Redis将停止接受写入操作。这可以防止数据丢失,但可能会影响性能。
stop-writes-on-bgsave-error yes
lua-time-limit:设置Lua脚本的最大执行时间(以毫秒为单位)。过长的执行时间可能导致内存泄漏或其他问题。
lua-time-limit 5000
要修改Redis的内存管理配置,请编辑redis.conf
文件,然后重新启动Redis服务器以使更改生效。或者,您可以在启动Redis时通过命令行参数传递这些配置项。