Nosql Redis配置与优化
一、基础配置(redis.conf)
1. 通用与守护进程
ini |
2. 网络配置(高并发必备)
ini |
3. 内存核心配置(最关键)
ini |
4. 持久化配置(性能 vs 安全)
(1)RDB 快照(备份、恢复快)
ini |
(2)AOF 日志(数据安全高)
ini |
5. 多线程 IO
ini |
6. 慢查询与超时
ini |
7. 安全配置
ini |
二、性能优化
1. 内存优化
- maxmemory 必须设:不设会 OOM 被系统杀死。
- 淘汰策略:
- 纯缓存 →allkeys-lru / allkeys-lfu
- 缓存 + 持久化 →volatile-lru
- 强一致存储 →noeviction
- 内存碎片:
- 监控mem_fragmentation_ratio > 1.5需优化
- 开启activedefrag或定期重启
- 内存使用技巧:
- 小对象用Hash替代多个 String
2. 持久化优化
- 混合持久化(4.0+):aof-use-rdb-preamble yes
- AOF 重写时先写 RDB 再追加 AOF,恢复极快、数据安全
- RDB:低峰备份,避免频繁 save
- AOF:
- 高并发用everysec
- 关闭appendfsync always除非必须强一致
3. 网络与连接优化
- TCP 参数(内核):
ini |
- 客户端:
- 使用连接池(JedisPool/Lettuce)
- 避免频繁断连 / 新建连接
- 批量操作:
- Pipeline打包命令(减少 RTT)
- MGET/MSET 替代多次 GET/SET
4. 线程与 CPU 优化
- Redis 6.0+开启多线程 IO
ini |
- 绑定 CPU(隔离核):taskset -c 2-5 redis-server
- 避免与其他服务争抢 CPU
5. 数据结构最佳实践
- 简单 KV、计数器 →String
- 对象、属性集 →Hash
- 消息队列、栈 →List
- 去重、交集 →Set
- 排行榜、有序队列 →Sorted Set
- 消息流、精确消费 →Stream
三、系统层面优化
ini |
四、监控指标
- info memory
- used_memory、maxmemory、mem_fragmentation_ratio
- info stats
- keyspace_hits /keyspace_misses(命中率 >95%)
- evicted_keys(淘汰数)
- info persistence
- aof_pending_bio_fsync、rdb_bgsave_in_progress
- slowlog get 10(慢查询)
- 连接数、QPS、延迟
五、场景化配置建议
场景 1:纯缓存(如会话、页面缓存)
- maxmemory-policyallkeys-lru
- appendonlyno(或仅 RDB)
- 允许一定淘汰,追求性能
场景 2:持久化存储(如配置、订单)
- maxmemory-policynoeviction
- appendonlyyes+everysec
- aof-use-rdb-preambleyes
- 定期备份 RDB
场景 3:高并发读写(电商、直播)
- 多线程 IOio-threads 4~8
- maxclients65535
- Pipeline 批量、连接池复用
