持久化选项
redis提供两种持久化方式:快照 只追加文件
1.快照:
使用save或bgsave,使用save独占程序
save 60 10000 满足60秒写入10000次选项,redis自动触发bgsave,若设置多个条件,任意一个都会执行
当redis收到shutdown或接受term信号时,会执行一个save
当redis连接另一个redis,并向对方发送sync命令开始一次复制时,也会触发bgsave
使用快照持久化,适用于允许丢失一部分数据的程序。
过于频繁将浪费资源,过于稀少将会丢失数据
2.AOF持久化 append-only file
数据保存到磁盘上,修改redis.conf
appendonly yes#开启AOF模式
appendfilename "appendonly.aof"#保存数据的AOF文件名称
appendfsync always #每个命令都写入
appendfsync everysec #每秒写入
appendfsync no #关闭,由系统决定何时写入
在redis-cli下使用bgrewriteaof命令,将移除AOF的冗余命令来重写AOF
AOF可以通过设置auto-aof-rewrite-percentage和auto-aof-rewrite-min-size来自动执行bgrewriteaof
auto-aof-rewrite-percentage 100 aof体积扩大一倍时执行
auto-aof-rewrite-min-size 64mb 体积大于64时重写
复制
设置主从服务器
slaveof host port开启复制#slaveof 127.0.0.1 6379,从服务器将清空自己的数据
slaveof no one 关闭
数据恢复
cd /var/lib/redis
cp appendonly.aof appendonly.aof.bak
redis-check-aof --fix appendonly.aof
service redis restart
更换故障主服务器
在从服务器执行SAVE,将快照文件发送到新的主服务器,新的主服务器执行快照和运行redis服务,从服务器执行slaveof到新的主服务器。
Redis事务
当一个客户端进行:
watch key
multi
set key newkey
在未进行exec前,有另一个客户端对key进行了替换更新或删除
则执行exec时,事务将失败
将多个redis连接替换成流水线(pipline)连接,可以提高性能