服务端优化
- 使用 lazy-free 模式进行惰性删除
- 设置 Redis 占用的内存空间,避免过大内存时,启用了虚拟内存(磁盘上的空间)来保存数据
- 选用适当的内存淘汰策略(LRU\LFU)
- 禁用内存大页(每次申请内存会耗更多的时间)
- 在物理机上部署 Redis 而不是在虚拟机中,避免宿主机器的复杂网络和 cpu 负载
- 使用 slowlog 慢日志来记录耗时的命令
- 数据持久化策略的选用(RDB\AOF\混合)
- 确保网络带宽的质量
- 可适当选择开启主从复制、哨兵模式、集群模式提供提高系统可用性
客户端优化
- 避免 bigkey
- 拆分大 key 成多个 key 存放数据
- 防止大量数据集中过期(固定过期时间+范围随机数)
- 选用合适的数据结构(String、Hash、List、Set、Sorted Set)保存数据
- 使用 pipeline 管理批量操作数据
- 集合的交、并、差集操作尽量不要在 Redis 服务器上做
- 避免长耗时的操作命令,如 key * , hgetall 等
- 使用 Redis 线程池来复用连接,而不是频繁创建、销毁连接