1.多数据库
| 特性 |
说明 |
| 数据库数量 |
最多 16个(0-15) |
| 默认数据库 |
0号库 |
| 切换数据库 |
SELECT <dbid> |
| 数据隔离 |
各库独立,FLUSHALL 会清空所有库 |
2.消息订阅与发布
1 2 3
| SUBSCRIBE channel PSUBSCRIBE pattern* PUBLISH channel message
|
场景:实时聊天系统、广播通知
3.Redis事务
事务特征
| 特征 |
说明 |
| 串行执行 |
事务中命令顺序执行,期间阻塞其他客户端 |
| 不保证原子性 |
某条命令失败,后续命令仍会执行 |
| 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
| save 900 1 save 300 10 save 60 10000
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
| appendonly no appendfilename "appendonly.aof"
appendfsync always
auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 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 |