Redis 是一个支持持久化的内存数据库,也就是说需要经常将内存中的数据同步到硬盘来保证持久化。
1、RDB--默认方式
1.1、介绍
RDB 持久化方式能够在指定的时间间隔能对你的数据进行快照存储。是默认的持久化方式。这种方式是将内存中数据以快照的方式写入到二进制文件中,默认的文件名dump.rdb。这种持久化方式被称为快照。
1.2、配置文件说明
dbfilename dump.rdb #文件名
save 900 1 # 过了 900 秒并且有 1 个 key 发生了改变 就会触发 save 动作
save 300 10 # 过了 300 秒并且有 10 个 key 发生了改变 就会触发 save 动作
save 60 10000 # 过了 60 秒并且至少有 10000 个 key 发生了改变 也会触发 save 动作
dir ./ #指定数据目录,默认为启动数据库时所在的目录
1.3、RDB 持久化测试
1.3.1、添加配置
cat >/opt/redis/etc/redis.conf<<-EOF
daemonize yes
protected-mode yes
requirepass 123456
bind 127.0.0.1 192.168.20.168
port 6379
pidfile /opt/redis/pid/redis.pid
logfile /opt/redis/log/redis.log
dbfilename dump.rdb
save 900 1
save 300 10
save 60 10000
dir /opt/redis/
EOF
pkill redis
/opt/redis/bin/redis-server /opt/redis/etc/redis.conf
1.3.2、录入数据
cat >~/set.sh<<-EOF
#!/bin/bash!
for i in `seq -w 1000`;
do
redis-cli -a 123456 set k_$i v_$i
done
EOF
bash set.sh
1.3.3、关闭redis,再次启动看数据是否存在
redis-cli -a 123456 shutdown
redis-server /opt/redis/etc/redis.conf
redis-cli -a 123456
2、AOF
2.1、介绍
使用 AOF 会让你的 Redis 更加耐久: 你可以使用不同的持久化策略:每次写的时候备份、每秒备份、无备份。使用默认的每秒备份策略,Redis 的性能依然很好(备份是由后台线程进行处理的,主线程会尽力处理客户端请求),一旦出现故障,你最多丢失 1 秒的数据。
2.2、配置文件说明
appendfilename "appendonly.aof" #文件名
# appendfsync always 有写操作,就马上写入磁盘。效率最慢,但是最安全
appendfsync everysec 默认,每秒钟写入磁盘一次。
# appendfsync no 不进行 AOF 备份,将数据交给操作系统处理。最快,最不安全
no-appendfsync-on-rewrite no 在进行aof重写的时候要不要停止aof备份
#aof重写,aof备份是类似于日志的备份方法,每当有命令执行时,就会记录在aof文件中,久而久之aof文件就会特别大,而aof重写技术,就是当aof备份文件满足设定的条件时,会把数据库中的数据逆化成命令,再将命令重新 写入aof备份文件中的过程。
##当设置成为yes时,在REWRITEAOF时,会停止AOF日志写入,如果此时redis宕机,则会丢失数据。
##当设置为no时,在REWRITEAOF时,同样会进行AOF日志写入,是最安全的,不会丢失数据。
auto-aof-rewrite-percentage 100 aof备份文件比上次重写时大100%时重写。
auto-aof-rewrite-min-size 64mb 当aof备份文件大于64mb重写。
3、持久化的问题
#关闭redis时,如果不满足rdb持久化条件,为什么数据不会丢失?
在使用shutdown命令关闭redis的时候,会自动执行bgsave命令,进行持久化。
如果使用kill,pkill命令 等同于上面的效果。
但是 -9 参数,强制终止,则会造成数据丢失。
#RDB与AOF的使用优先级
假设RDB与AOF备份文件都存在,redis启动时,会优先使用AOF日志文件,将数据加载到内存中,正是由于AOF优先级更高
#no-appendfsync-on-rewrite no
当前配置下,即使reis意外宕机,AOF与RDB备份数据也可以保持一致性。
4、单机配置文件
cat >/opt/redis/etc/redis.conf<<-EOF
daemonize yes
protected-mode yes
requirepass 123456
bind 0.0.0.0
port 6379
pidfile /opt/redis/pid/redis.pid
logfile /opt/redis/log/redis.log
dir /opt/redis/
dbfilename dump.rdb
save 900 1
save 300 10
save 60 10000
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
EOF
原文链接:/redis/997722.html