1. 设置合理的最大内存限制
通过maxmemory参数限制Redis使用的最大内存(如maxmemory 256mb),避免内存溢出导致服务崩溃。配置文件路径为/etc/redis/redis.conf,修改后需重启Redis服务使更改生效。
2. 选择合适的内存淘汰策略
当内存达到maxmemory限制时,需通过maxmemory-policy参数指定淘汰策略,常见策略包括:
volatile-lru或allkeys-lru。3. 优化过期键处理
Redis采用惰性删除(读取键时检查是否过期)和定期扫描(后台周期性清理过期键)结合的方式管理过期键。为避免定期扫描影响性能,可通过调整hz参数(默认10,表示每秒执行10次后台任务)提高扫描频率,但需平衡CPU消耗。
4. 调整内核参数提升内存管理效率
修改/etc/sysctl.conf文件优化内核参数:
vm.swappiness=10:降低系统使用交换分区(Swap)的倾向(值越小越倾向于使用物理内存),减少Redis因Swap导致的性能下降;net.ipv4.tcp_syncookies=1:防止SYN Flood攻击,提升网络稳定性;fs.file-max=65536:增加系统最大文件描述符数量,满足Redis高并发连接需求。sysctl -p使参数生效。5. 使用物理内存并避免Swap
Redis是内存数据库,应优先运行在物理内存充足的服务器上。若物理内存不足,可通过vm.swappiness参数减少Swap使用,或升级服务器配置。避免Redis因Swap导致频繁磁盘I/O,严重影响性能。
6. 监控内存使用状态
通过Redis内置命令实时监控内存使用情况:
INFO memory:查看内存使用详情(如used_memory表示已用内存,maxmemory表示最大内存限制);MEMORY USAGE key:查看指定键的内存占用量;redis-cli --bigkeys:查找占用内存大的键(需谨慎在生产环境使用,避免阻塞)。