Redis高级操作
Redis高级特性指南
一、发布订阅(Pub/Sub)模式
1.1 概述
Redis发布订阅(pub/sub)是一种消息通信模式:
- 发送者(pub)发送消息
- 订阅者(sub)接收消息
- 支持多个频道(channel)
1.2 消息格式
消息包含三个部分:
-
消息类型:
- subscribe: 订阅成功
- unsubscribe: 取消订阅
- message: 接收到消息
-
频道名称
-
具体消息内容
1.3 基本命令
# 订阅频道
subscribe channel [channel ...]
# 订阅模式(支持通配符)
psubscribe pattern [pattern ...]
# 发布消息
publish channel message
# 退订频道
unsubscribe [channel ...]
# 退订模式
punsubscribe [pattern ...]
1.4 使用示例
# 终端1:订阅频道
redis-cli
> subscribe chat1
Reading messages... (press Ctrl-C to quit)
# 终端2:发布消息
redis-cli
> publish chat1 "Hello World"
二、主从复制
2.1 概述
主从复制允许从服务器(slave)从主服务器(master)同步数据,实现备份和读写分离。
2.2 特点
- 一个主服务器可以有多个从服务器
- 从服务器可以连接其他从服务器
- 主从复制不会阻塞主服务器
- 提供数据备份和读写分离能力
2.3 配置步骤
2.3.1 主服务器配置
- 编辑配置文件:
sudo vim /etc/redis/redis.conf
- 设置主服务器IP:
bind 192.168.1.10
- 重启Redis服务:
sudo service redis restart
2.3.2 从服务器配置
- 编辑配置文件:
sudo vim /etc/redis/redis.conf
- 添加主从配置:
bind 192.168.1.11
slaveof 192.168.1.10 6379
- 重启Redis服务:
sudo service redis restart
2.4 主从复制验证
# 在主服务器上写入数据
set key1 value1
# 在从服务器上读取数据
get key1
三、持久化机制
3.1 RDB持久化
RDB持久化通过快照的方式保存数据库状态。
3.1.1 触发方式
- 手动触发:
# 同步保存
save
# 异步保存
bgsave
- 自动触发:
# redis.conf配置
save 900 1 # 900秒内有1个改动
save 300 10 # 300秒内有10个改动
save 60 10000 # 60秒内有10000个改动
3.2 AOF持久化
AOF持久化记录服务器执行的所有写操作。
3.2.1 配置AOF
# redis.conf
appendonly yes
appendfilename "appendonly.aof"
# 同步策略
appendfsync always # 每次写入都同步
appendfsync everysec # 每秒同步一次
appendfsync no # 操作系统决定同步时机
3.3 持久化最佳实践
- 同时使用RDB和AOF
- RDB用于备份
- AOF用于保证数据安全性
- 定期对AOF文件进行重写
- 根据实际需求调整同步策略
四、常见问题与解决方案
4.1 主从复制常见问题
- 复制延迟
- 监控主从延迟时间
- 合理设置网络带宽
- 数据不一致
- 定期检查主从数据
- 配置适当的同步策略
4.2 持久化注意事项
- RDB可能丢失最后一次快照后的数据
- AOF文件会比RDB文件大
- AOF重写可能消耗系统资源
- 建议定期备份持久化文件
五、性能优化建议
- 合理配置持久化策略
- 适当调整主从同步频率
- 控制AOF文件大小
- 监控系统资源使用情况
- 定期清理无用数据