贺兴旺
Redis配置文件(2)SNAPSHOTTING快照/APPEND ONLY MODE追加
来源:崔廷芳     发布时间: 2019-07-11      浏览次数:166

字号:

redis.conf文件

1.Savea. save 秒钟 写操作次数

RDB是整个内存的压缩过的Snapshot,RDB的数据结构,可以配置复合的快照触发条件,默认是1分钟内改了1万次,或5分钟内改了10次,或15分钟内改了1次。182 # Save the DB on disk:184 #   save <seconds> <changes>186 #   Will save the DB if both the given number of seconds and the given187 #   number of write operations against the DB occurred.189 #   In the example below the behaviour will be to save:190 #   after 900 sec (15 min) if at least 1 key changed191 #   after 300 sec (5 min) if at least 10 keys changed192 #   after 60 sec if at least 10000 keys changed

b.如果想禁用RDB持久化的策略,只要不设置任何save指令,或者给save传入一个空字符串参数也可以

194 # Note: you can disable saving completely by commenting out all "save" lines.195 #196 # It is also possible to remove all the previously configured save197 # points by adding a save directive with a single empty string argument198 # like in the following example:199 #200 # save ""202 save 900 1203 save 300 10204 save 60 10000

set key value1save此时立马执行,形成最新的dump文件

 

stop-writes-on-bgsave-error如果配置成no,表示你不在乎数据不一致或者有其他的手段发现和控制

# However if you have setup your proper monitoring of the Redis server# and persistence, you may want to disable this feature so that Redis will# continue to work as usual even if there are problems with disk,# permissions, and so forth.stop-writes-on-bgsave-error yes

yes:出错了就立即停止

 

rdbcompressionrdbcompression:对于存储到磁盘中的快照,可以设置是否进行压缩存储。如果是的话,redis会采用LZF算法进行压缩。如果你不想消耗CPU来进行压缩的话,可以设置为关闭此功能

# Compress string objects using LZF when dump .rdb databases?# For default that"s set to "yes" as it"s almost always a win.# If you want to save some CPU in the saving child set it to "no" but# the dataset will likely be bigger if you have compressible values or keys.rdbcompression yes

 

dbfilename

默认生成的rdb文件名

# The filename where to dump the DBdbfilename dump.rdb

 

dir

# Note that you must specify a directory here, not a file name.dir ./

 

实战测试:

修改配置文件

200 # save ""202 save 900 1203 save 120 10204 save 60 10000

 

两分钟10次操作

之后会生成一个dump.rdb文件,具体生成文件的默认名请修改:dbfilename

 

 进行复制(备份)

 

 

 模拟事故:

此时直接删除所有的数据

 

 

 此时再次重新登陆则是会显示为空,即是存在dump.rdb文件

 

 

在管不redis时,迅速斩断,保存文件dump.rdb

 

 

此时删除之前的dump.rdb文件,并且把之前的dump_cp.rdb备份文件复制一份命名为dump.rdb此时又可以进行之前的keys的值获取

 

 

 

 APPEND ONLY MODE追加

  appendonly:默认开关状态,可以同时和RDB一起开着

# AOF and RDB persistence can be enabled at the same time without problems.# If the AOF is enabled on startup Redis will load the AOF, that is the file# with the better durability guarantees.## Please check http://redis.io/topics/persistence for more information.appendonly no默认是关着的

 

  appendfilename:默认的文件名

# The name of the append only file (default: "appendonly.aof")appendfilename "appendonly.aof"

 

 appendfsync

# no: don"t fsync, just let the OS flush the data when it wants. Faster.# always: fsync after every write to the append only log. Slow, Safest.# everysec: fsync only one time every second. Compromise.always:同步持久话每次发生数据变更立即记录到磁盘,性能比较差但是数据完整性好everysec:出场默认的推荐的,异步操作,每秒记录,如果一秒内宕机,有数据丢失

 

# More details please check the following article:# http://antirez.com/post/redis-persistence-demystified.html# If unsure, use "everysec".# appendfsync alwaysappendfsync everysec

 

no-appendfsync-on-rewrite:重写时是否可以运用Appendfsync,用默认no即可,保证数据安全性。

# If you have latency problems turn this to "yes". Otherwise leave it as# "no" that is the safest pick from the point of view of durability.no-appendfsync-on-rewrite no

 

auto-aof-rewrite-min-size:设置重写的基准值auto-aof-rewrite-percentage:设置重写的基准值

# This base size is compared to the current size. If the current size is# bigger than the specified percentage, the rewrite is triggered. Also# you need to specify a minimal size for the AOF file to be rewritten, this# is useful to avoid rewriting the AOF file even if the percentage increase# is reached but it is still pretty small.# Specify a percentage of zero in order to disable the automatic AOF# rewrite feature.auto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 64mb

 

实战测试:aof测试首先开启aof测试

# Please check http://redis.io/topics/persistence for more information.appendonly yes

 

此时已经生成文件,aof自动开启

 

 创造性的意外事件

 

 

查看appendonly.aof发现已经记下了我们写的命令记录了我们执行的每一条命令

 

 

重新启动里面的内容为空

 

 

删除appendonly.aof的最后一句

 

 

此时重新启动获取到我们之前的内容

 

 

假设出现下面的情况:appendonly.aof文件出错:可能是网络,断电.......

 

 

 此时RDB和AOF文件都在

 

 

 此时启动Redis

 

 

 在dump.rdb文件完整的情况下,appendonly.aof文件出错,说明后者的优先级大于前者

 

 那么此时的处理方式是:

redis-check-aof --fix appendonly.aof

 

再次重新启动:

 

, 1, 0, 9);

  • 相关内容: