Ubuntu系统下Redis性能优化配置指南
maxmemory参数限制Redis使用的最大内存(如maxmemory 4gb),避免内存耗尽导致系统崩溃。需根据服务器物理内存和应用需求调整,预留10%-20%内存给系统和其他进程。maxmemory-policy参数定义内存满时的处理方式。常用策略:allkeys-lru(从所有键中淘汰最近最少使用的)、volatile-lru(从设置了过期时间的键中淘汰LRU数据),平衡内存利用率与数据保留需求。save指令设置快照保存频率(如save 900 1表示900秒内至少1次修改则保存),平衡数据安全与性能。生产环境可保留save 900 1和save 300 10,兼顾实时性与IO开销。appendonly yes)保证数据完整性,将appendfsync设为everysec(每秒同步一次),兼顾性能与数据丢失风险。避免使用always(每次修改都同步,性能低)或no(由系统决定,风险高)。auto-aof-rewrite-percentage 100(当前AOF文件大小增长100%时触发)和auto-aof-rewrite-min-size 64mb(最小重写文件大小)配置,定期压缩AOF文件,减少磁盘占用和恢复时间。sudo ulimit -n 65535临时调整,或修改/etc/security/limits.conf永久生效(添加redis soft nofile 65535和redis hard nofile 65535)。/etc/sysctl.conf提升网络性能:vm.overcommit_memory=1(允许内存超额分配,避免Redis内存分配失败)、net.core.somaxconn=4096(增大TCP连接队列长度,减少连接拒绝)。修改后执行sudo sysctl -p生效。/etc/redis/redis.conf中的bind参数,若需远程访问可设为服务器IP(如bind 192.168.1.100),避免默认127.0.0.1限制。同时通过requirepass设置强密码,限制非法访问。tcp-backlog参数控制未完成连接的队列大小(如tcp-backlog 1024),配合系统net.core.somaxconn参数,避免高并发时连接堆积。hash存储对象(减少键数量)、sorted set实现排行榜(高效排序),避免用多个string键存储关联数据(增加内存和IO开销)。SORT、ZUNIONSTORE等CPU密集型命令,尽量在客户端完成复杂计算。redis-cli --cluster create命令创建Redis Cluster(至少3主3从节点),将数据分布到多个节点,提升吞吐量和容错能力。redis-cli命令查看性能指标,如redis-cli info memory(内存使用情况)、redis-cli info stats(整体统计)、redis-cli --stat(实时监控QPS、延迟)。