解决Ubuntu下Redis内存不足问题可从配置优化、系统调优和监控管理三方面入手,具体方法如下:
/etc/redis/redis.conf
,设置maxmemory
参数为合理值(如服务器物理内存的50%-70%),避免Redis占用过多内存。maxmemory-policy
为allkeys-lru
或volatile-lru
,当内存不足时自动淘汰最近最少使用的键。fallocate
创建交换文件(如sudo fallocate -l 4G /swapfile
),并启用它(sudo swapon /swapfile
),避免Redis因内存不足被系统杀死。/etc/sysctl.conf
,设置vm.swappiness=10
(降低交换分区使用频率),减少系统频繁使用Swap。expire
设置键过期时间,或通过FLUSHALL
定期清理无用数据。redis-cli info memory
查看内存占用,或使用htop
、top
监控系统内存状态。mem_fragmentation_ratio
(内存碎片率)过高(>1.5),可通过重启Redis或优化数据结构减少碎片。注意:修改配置前需备份数据,建议在测试环境验证后再应用到生产环境[1,2,3,4,5,6,7,8,9,10,11]。