Ubuntu Redis支持内存限制配置,通过修改Redis配置文件可限制其最大使用内存,避免因内存溢出导致服务异常。
Ubuntu系统中,Redis的主配置文件通常位于/etc/redis/redis.conf,所有内存限制相关的配置均在此文件中修改。
maxmemorymaxmemory是控制Redis最大内存使用的关键参数,用于设置Redis实例可使用的最大内存大小(不包括系统自身占用的内存)。
#注释,并指定内存大小及单位(支持K/M/G,不区分大小写)。maxmemory 1Gmaxmemory 512Mmaxmemory 256m。maxmemory-policy当Redis使用内存达到maxmemory限制时,需通过maxmemory-policy指定内存回收策略,决定如何处理新写入的数据。常见策略包括:
noeviction(默认):不回收任何键,新写入操作返回错误(可能导致服务不可用,仅用于不允许数据丢失的场景)。allkeys-lru:从所有键中选择**最近最少使用(LRU)**的键淘汰(适用于大多数缓存场景,平衡性能与内存利用率)。volatile-lru:仅从设置了过期时间的键中选择LRU键淘汰(适用于有明确过期时间的缓存数据)。allkeys-random:从所有键中随机淘汰键(适用于无明确访问规律的场景)。volatile-ttl:优先淘汰剩余生存时间(TTL)最短的键(适用于需要优先清理即将过期数据的场景)。修改配置文件后,需通过以下步骤使设置生效:
nano或vim编辑器修改后,按Ctrl+O保存、Ctrl+X退出。sudo systemctl restart redis命令重启服务(部分系统可能使用redis-server)。redis-cli工具执行以下命令,确认配置是否生效:
CONFIG GET maxmemory(返回值为设置的字节数,如1073741824表示1GB)。CONFIG GET maxmemory-policy(返回当前设置的策略名称)。maxmemory设置为物理内存的70%-80%(预留足够内存给系统和其他进程)。maxmemory-policy时,需根据业务场景权衡:若数据允许丢失,可选择allkeys-lru提升缓存命中率;若数据不允许丢失,需结合持久化策略使用noeviction(但需监控内存使用,避免溢出)。sudo cp /etc/redis/redis.conf /etc/redis/redis.conf.bak),便于恢复。