Redis配置中哪些参数影响性能
小樊
46
2025-09-25 07:12:09
1. 内存管理参数
- maxmemory:限制Redis使用的最大内存(如“4gb”),避免内存无限制增长导致OOM Killer终止进程。建议设置为服务器物理内存的70%-80%,留出空间给系统和其他进程。
- maxmemory-policy:内存满时的淘汰策略,直接影响性能和数据可靠性。常用策略包括
allkeys-lru(从所有key中淘汰最近最少使用的,适合缓存场景)、volatile-lru(仅从设置了过期时间的key中淘汰,适合部分持久化场景)、allkeys-lfu(Redis 4.0+,从所有key中淘汰最不经常使用的,适合有长期热点数据的场景)。避免使用noeviction(内存满时写操作返回错误,除非明确需要数据不丢失)。
- maxmemory-samples:LRU/LFU算法的采样数(默认5),增大此值(如10)可提高淘汰精度,但会增加少量CPU开销。内存紧张且Key价值差异大时推荐调大。
- *lazyfree-lazy-系列(Redis 4.0+):异步释放内存,避免大Key或大量Key删除时阻塞主线程。关键参数包括
lazyfree-lazy-eviction yes(内存淘汰时异步删除)、lazyfree-lazy-expire yes(Key过期时异步删除)、replica-lazy-flush yes(从节点全量同步后清空旧数据时异步执行)。生产环境强烈建议开启。
2. 持久化配置参数
- appendfsync:AOF刷盘策略,是性能与数据安全的权衡点。
everysec(默认,每秒刷盘一次)是推荐设置,兼顾性能(损失1秒数据)和安全性;always(每次写命令都刷盘)性能最差(约QPS 1k-10k),但数据最安全;no(由操作系统决定刷盘时间)性能最好,但宕机可能丢失较多数据。
- auto-aof-rewrite-percentage/auto-aof-rewrite-min-size:控制AOF重写的触发条件。
auto-aof-rewrite-percentage(默认100,即AOF文件增长100%时重写)、auto-aof-rewrite-min-size(默认64mb,AOF文件达到此大小时才触发重写)。根据业务写入量和磁盘空间调整,避免过于频繁的重写(重写时会占用大量磁盘IO,影响性能)。
- rdbcompression/rdbchecksum:RDB持久化的压缩和校验设置。
rdbcompression yes(默认,开启RDB文件压缩,节省磁盘空间,CPU开销较小)、rdbchecksum yes(默认,开启RDB文件校验和,确保数据完整性)。生产环境建议均开启。
3. 网络与连接参数
- tcp-backlog:TCP监听队列长度(默认511),高并发场景下需增大(如2048或更高),避免因队列满导致连接失败。需同步调整Linux系统的
somaxconn参数(如设置为65535)。
- maxclients:允许的最大客户端连接数(默认10000),根据服务器硬件资源(如CPU、内存)和负载情况调整。设置过小会导致连接等待超时,设置过大可能影响Redis性能。
- timeout:客户端空闲连接超时时间(默认0,不自动关闭),建议设置为300秒(5分钟),避免无用连接占用资源。
- tcp-keepalive:TCP保活间隔(默认300秒),建议设置为60秒,及时清理僵死连接,减少无效连接对系统资源的占用。
4. I/O与线程参数
- io-threads:I/O线程数(Redis 6.0+),用于处理网络IO(读请求、写响应)。建议设置为CPU核心数-1或CPU核心数/2(如4核CPU设置为3或2),不要超过CPU核心数。此参数能提升网络密集型场景(如大Value、Pipeline)的吞吐量,但不处理命令(命令仍在主线程执行)。
- io-threads-do-reads:是否让I/O线程处理读请求解析(默认no),需设置为yes才能让io-threads生效。开启后可显著提升读操作的并发性能。
5. 持久化优化参数
- save:RDB自动保存策略(默认“900 1 300 10 60 10000”,即900秒内至少1次变更、300秒内至少10次变更、60秒内至少10000次变更触发快照)。高并发写入场景建议关闭自动RDB(
save ""),改为手动执行BGSAVE或在低峰期执行,避免BGSAVE时的fork()阻塞和写时复制(COW)内存开销。
- no-appendfsync-on-rewrite:AOF重写时是否暂停
appendfsync(默认no),建议设置为yes,避免AOF重写(大量磁盘IO)和主进程写AOF(刷盘)竞争磁盘IO,导致性能急剧下降。