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 ./ #指定数据目录,默认为启动数据库时所在的目录
@H_403_13@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
@H_403_13@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
@H_403_13@1.3.3、关闭redis,再次启动看数据是否存在
redis-cli -a 123456 shutdown redis-server /opt/redis/etc/redis.conf redis-cli -a 123456
@H_403_13@
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重写。
@H_403_13@3、持久化的问题
#关闭redis时,如果不满足rdb持久化条件,为什么数据不会丢失? 在使用shutdown命令关闭redis的时候,会自动执行bgsave命令,进行持久化。 如果使用kill,pkill命令 等同于上面的效果。 但是 -9 参数,强制终止,则会造成数据丢失。 #RDB与AOF的使用优先级 假设RDB与AOF备份文件都存在,redis启动时,会优先使用AOF日志文件,将数据加载到内存中,正是由于AOF优先级更高 #no-appendfsync-on-rewrite no 当前配置下,即使reis意外宕机,AOF与RDB备份数据也可以保持一致性。
@H_403_13@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
@H_403_13@