敢说敢作敢为, 无怨无恨无悔。这篇文章主要讲述Redis配置文件SNAPSHOTTING快照/APPEND ONLY MODE追加相关的知识,希望能为你提供帮助。
redis.conf文件
1.Save
a.
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 given 187 # 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 changed 191 # after 300 sec (5 min) if at least 10 keys changed 192 # after 60 sec if at least 10000 keys changedb.如果想禁用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 save 197 #points by adding a save directive with a single empty string argument 198 #like in the following example: 199 # 200 #save "" 202 save 900 1 203 save 300 10 204 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:出错了就立即停止
rdbcompression rdbcompression:对于存储到磁盘中的快照,可以设置是否进行压缩存储。如果是的话,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 DB dbfilename dump.rdb
dir
# Note that you must specify a directory here, not a file name. dir ./
实战测试:
修改配置文件
200 #save "" 202 save 900 1 203 save 120 10 204 save 60 10000
两分钟10次操作
文章图片
之后会生成一个dump.rdb文件,具体生成文件的默认名请修改:dbfilename
进行复制(备份)
文章图片
模拟事故:
【Redis配置文件SNAPSHOTTING快照/APPEND ONLY MODE追加】此时直接删除所有的数据
文章图片
此时再次重新登陆则是会显示为空,即是存在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 always appendfsync 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 100 auto-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
文章图片
再次重新启动:
文章图片
推荐阅读
- android学习第二天遇到的问题
- 轻量级ORM框架——第二篇(Dapper中的一些复杂操作和inner join应该注意的坑)
- 轻量级ORM框架——第一篇(Dapper快速学习)
- [微信开发] - 从最新的appid,appsecret读取配置信息
- Android编译自己的程序到/system/bin
- 中国银行app下载|中国银行app安卓版下载
- Android popupMenu
- 小程序 与 App 与 H5 之间的区别
- Android 无线调试