一、内存管理优化
maxmemory限制:通过maxmemory参数定义Redis最大可用内存(如maxmemory 4gb),防止内存溢出导致性能骤降或进程被系统终止。需根据服务器内存容量及业务需求预留20%-30%的闲置内存,避免系统内存耗尽。maxmemory-policy参数,当内存达到上限时自动淘汰数据。常用策略包括volatile-lru(淘汰最近最少使用的带过期时间的key)、allkeys-lru(淘汰所有key中最近最少使用的)、volatile-lfu(淘汰最不经常使用的带过期时间的key),其中allkeys-lru适合大多数场景。unlink命令,可将大key的删除操作放到后台线程执行,避免阻塞主线程。对于大key的删除,优先使用unlink而非del。二、数据结构优化
Hash(节省内存,支持字段级操作);统计UV用HyperLogLog(内存占用极低,误差约0.81%);存储大量有序数据用ZSet(支持范围查询和排序);避免用String存储复杂对象(会增加内存开销)。GET/SET操作时易引发阻塞。解决方法是拆分大key为多个小key(如将大Hash拆分为多个小Hash,每个小Hash存储部分字段);value尽量存储精简数据(如用JSON替代嵌套结构,压缩文本内容)。三、持久化策略优化
appendonly yes),并设置appendfsync everysec(每秒同步一次,兼顾性能与数据安全);save参数设置快照频率,如save 900 1表示900秒内至少1个key变化则触发快照);save ""(禁用默认快照),避免不必要的磁盘IO。bgrewriteaof),生成新的AOF文件(仅包含最终数据)。可通过auto-aof-rewrite-percentage(触发重写的增长率,默认100%,即文件大小翻倍)和auto-aof-rewrite-min-size(触发重写的最小文件大小,默认64MB)调整重写频率,减少重写对性能的影响。四、网络与连接优化
/etc/sysctl.conf中添加以下配置,提升网络吞吐量与连接处理能力:
net.core.somaxconn 1024(增加TCP连接队列长度,避免连接被拒绝);net.ipv4.tcp_max_syn_backlog 1024(增加SYN队列长度,应对高并发连接请求);net.ipv4.tcp_keepalive_time 300(设置TCP keepalive时间,检测死连接,释放资源)。修改后执行sysctl -p使配置生效。redis.conf中设置maxclients参数(如maxclients 10000),防止过多连接占用服务器资源(默认10000,可根据服务器资源调整)。超过限制的连接会被拒绝,避免Redis因连接过多而崩溃。五、系统资源与硬件优化
/etc/security/limits.conf,添加以下内容:redis soft nofile 65535
redis hard nofile 65535
同时,在/etc/pam.d/login中确保包含session required pam_limits.so,使限制生效。修改后重启Redis服务。六、集群与高可用优化
七、监控与运维优化
redis.conf中设置slowlog-log-slower-than(慢查询阈值,单位微秒,默认10毫秒)和slowlog-max-len(慢查询日志长度,默认128条),通过SLOWLOG GET命令查看慢查询(如KEYS *、大key操作),针对性优化慢查询语句。KEYS *命令(会遍历所有key,阻塞Redis主线程,导致服务不可用),替代方案是使用SCAN命令(增量遍历key,不阻塞);避免在高并发场景下使用MULTI/EXEC事务(会锁住key,影响并发性能)。