本文围绕 Redis 这一主流 NoSQL 内存数据库,从基础概念、安装配置、常用命令、持久化、性能优化五大核心模块,系统讲解了 Redis 的理论原理、实操部署与生产调优方案,适用于高并发缓存、会话存储、计数器、排行榜等场景,是构建高性能分布式架构的关键技术。
一、Redis 基础认知
1. 关系型 vs 非关系型数据库
- 关系型数据库:结构化二维表模型,支持 SQL,强一致性,代表 MySQL、Oracle,难以应对海量高并发读写。
- NoSQL(非关系型) :分布式、易扩展、高吞吐,弥补关系库在高并发、海量存储、横向扩展上的不足,代表 Redis、MongoDB。
2. Redis 核心特性
Redis 是开源、基于内存、支持持久化的key-value 型 NoSQL 数据库,具备:
- 超高读写速度(读 11 万次 / 秒、写 8 万次 / 秒)
- 支持丰富数据结构:String、List、Hash、Set、ZSet
- 支持数据持久化与主从复制
- 操作原子性,支持事务
- 单进程模型,可多实例部署提升并发
3. 典型应用场景
缓存、会话存储、最新数据列表、排行榜、计数器、分布式锁、实时分析、消息队列等。
二、Redis 安装与配置
1. 安装与服务管理
- 编译安装后通过脚本自动注册系统服务,默认端口6379。
- 服务控制:
/etc/init.d/redis_6379 start|stop|restart|status。
2. 核心配置文件(6379.conf)
bind:监听 IP,支持多地址绑定port 6379:服务端口daemonize yes:后台守护进程运行logfile /var/log/redis_6379.log:日志路径dir /var/lib/redis/6379:数据文件目录maxmemory:最大内存限制requirepass:连接密码appendonly yes/no:是否开启 AOF 持久化
三、Redis 常用命令
1. 客户端连接
plaintext
redis-cli -h IP -p 端口
2. 基础 key 操作
set key value/get key:存 / 取数据keys *:查看所有 keyexists key:判断 key 是否存在del key:删除 keytype key:查看值类型rename / renamenx:重命名(安全建议用 renamenx)dbsize:查看 key 数量
3. 多数据库操作
- 默认 16 个库(0~15),
select 数字切换 move key 库号:移动 key 到其他库FLUSHDB:清空当前库FLUSHALL:清空所有库(生产慎用)
4. 性能测试工具
redis-benchmark:官方压测工具,可批量测试读写性能。
四、Redis 持久化(核心重点)
Redis 基于内存运行,必须开启持久化防止重启数据丢失 ,提供RDB 和AOF两种机制。
1. RDB 持久化
- 原理:定时将内存数据生成快照(dump.rdb),二进制压缩存储。
- 触发 :按配置时间 + key 变化数自动触发,或执行
bgsave。 - 优点:文件小、恢复快、备份方便、对性能影响小。
- 缺点:故障时会丢失最后一次快照后的数据。
2. AOF 持久化
- 原理 :以日志追加模式记录所有写操作,重启时重放命令恢复数据。
- 三种同步策略 :
always:每次修改同步(最安全、最慢)everysec:每秒同步(默认,折中)no:不同步(最快、不安全)
- 优点:数据安全性高、可读性强、支持重写压缩。
- 缺点:文件大、恢复速度慢、对性能有一定影响。
3. AOF 重写
随着运行 AOF 文件会变大,Redis 自动 / 手动执行重写,去掉冗余命令、减小文件体积,提升恢复速度。
4. 持久化选型建议
- 追求性能、可容忍少量丢失:RDB
- 追求数据安全、不允许丢失:AOF(everysec)
- 生产最佳实践:RDB + AOF 同时开启
五、Redis 生产优化(核心重点)
1. 内存优化
- 内存碎片率 :
mem_fragmentation_ratio- 1~1.5:正常
-
1.5:碎片过高,可重启恢复
- <1.0:内存不足,发生 swap,性能急剧下降
- 降低内存使用
- 优先使用Hash 结构存储小对象
- 为 key 设置过期时间(expire)
- 选用 32 位版本(数据 < 4GB)
2. 内存淘汰策略(maxmemory-policy)
达到最大内存后自动删除 key,避免 OOM:
volatile-lru:淘汰设置了过期时间的最近最少使用 key(推荐)allkeys-lru:所有 key 中淘汰最少使用(通用推荐)volatile-ttl:淘汰即将过期 keynoeviction:不淘汰,直接报错(默认)
3. 通用性能优化
- 开启
appendfsync everysec平衡安全与性能 - 合理设置
maxmemory,避免 swap - 使用 jemalloc/tcmalloc 内存分配器减少碎片
- 单实例内存建议不超过 10GB,超大内存可分片集群
- 关闭非必要持久化提升纯缓存性能
六、总结
Redis 是高并发架构中最核心的内存缓存与存储组件,具备高性能、多数据结构、持久化、易扩展等优势。生产环境需重点关注:
- 合理配置RDB+AOF 持久化保证数据安全
- 通过内存限制、淘汰策略、结构优化避免 OOM 与 swap
- 使用多数据库、key 过期、Hash 结构提升存储效率
- 通过持久化与内存调优平衡性能与数据可靠性
掌握以上内容,可完成 Redis 从部署、配置、命令使用到生产优化的全流程运维,支撑高并发、低延迟的业务系统稳定运行。