Redis特性

1.多数据库

特性 说明
数据库数量 最多 16个(0-15)
默认数据库 0号库
切换数据库 SELECT <dbid>
数据隔离 各库独立,FLUSHALL 会清空所有库

2.消息订阅与发布

1
2
3
SUBSCRIBE channel               # 订阅频道
PSUBSCRIBE pattern* # 批量订阅(通配符)
PUBLISH channel message # 发布消息到频道

场景:实时聊天系统、广播通知

3.Redis事务

事务特征

特征 说明
串行执行 事务中命令顺序执行,期间阻塞其他客户端
不保证原子性 某条命令失败,后续命令仍会执行
MULTI/EXEC/DISCARD 开启/提交/回滚事务

事务命令

1
2
3
MULTI                           # 开启事务
EXEC # 提交事务
DISCARD # 回滚事务

注意事项

情况 结果
通讯故障导致网络断开 EXEC前命令不执行
EXEC后网络中断 所有命令都会执行
AOF持久化时宕机 重启后可能部分数据丢失,用 redis-check-aof 修复

4.Redis持久化

Redis 所有数据存储在内存,持久化是将数据同步到硬盘的过程

方式 说明
RDB 定时快照,默认开启
AOF 日志追加,需手动开启
无持久化 禁用两种持久化,仅作缓存
混合使用 RDB + AOF 同时开启

RDB持久化

优势

优势 说明
单文件备份 整个数据库只有一个文件,便于备份恢复
灾难恢复佳 文件可压缩传输,恢复快
性能最大化 fork子进程持久化,不影响主进程
启动效率高 大数据集时比AOF恢复更快

劣势

劣势 说明
数据丢失风险 宕机时最后一次快照后的数据丢失
fork开销 大数据集时fork可能阻塞几百毫秒到1秒

配置参数

1
2
3
4
5
6
7
8
# redis.conf
save 900 1 # 900秒内至少1个key变化则快照
save 300 10 # 300秒内至少10个key变化则快照
save 60 10000 # 60秒内至少10000个key变化则快照

dbfilename dump.rdb # 快照文件名
dir ./ # 快照文件目录
rdbcompression yes # 是否压缩(默认开启)

AOF 持久化

优势

优势 说明
数据安全性高 三种同步策略可选
append模式 宕机不破坏已有内容
自动重写 文件过大时自动 BGREWRITEAOF
日志清晰 格式清晰,易于理解和修复

劣势

劣势 说明
文件体积大 相同数据量下AOF文件通常大于 RDB
同步频率影响性能 always模式性能最低

同步策略

策略 说明 性能 安全性
always 每次修改同步 最低 最高
everysec 每秒同步(默认) 中等 较好
no 不同步 最高 最低

配置参数

1
2
3
4
5
6
7
8
9
10
11
# redis.conf
appendonly no # 默认关闭
appendfilename "appendonly.aof" # AOF文件名

appendfsync always # 每次修改同步
# appendfsync everysec # 每秒同步(推荐)
# appendfsync no # 不同步

# 自动重写触发条件
auto-aof-rewrite-percentage 100 # AOF增长超过100%时触发
auto-aof-rewrite-min-size 64mb # AOF最小64MB才触发

5.redis.conf配置详解

基础配置

参数 默认值 说明
daemonize no 是否后台运行
pidfile /var/run/redis.pid PID文件路径
bind 127.0.0.1 绑定IP,生产环境建议设置
port 6379 监听端口
timeout 0 客户端空闲超时时间(秒)
loglevel notice 日志等级:debug/verbose/notice/warning
logfile “” 日志文件路径,空则输出到终端
databases 16 数据库数量

内存与安全

参数 说明
requirepass 客户端连接密码
maxclients 最大客户端连接数
maxmemory 最大内存限制
maxmemory-policy 内存满时的淘汰策略

淘汰策略

策略 说明
noeviction 不淘汰,返回错误(默认)
volatile-lru 使用LRU算法淘汰有过期时间的key
allkeys-lru 使用LRU算法淘汰所有key
volatile-lfu 使用LFU算法淘汰有过期时间的key
allkeys-lfu 使用LFU算法淘汰所有key
volatile-random 随机淘汰有过期时间的key
allkeys-random 随机淘汰所有key
volatile-ttl 淘汰最早过期的key

Hash优化配置

参数 默认值 说明
hash-max-zipmap-entries 64 hash压缩阈值(元素个数)
hash-max-zipmap-value 512 hash压缩阈值(单值大小)
activerehashing yes 是否开启主动rehash