0
点赞
收藏
分享

微信扫一扫

memcache&redis构建缓存服务器(6) redis持久化

静悠 2022-06-17 阅读 74

开启持久化功能后,重启redis后,数据会自动通过持久化文件恢复


方式

RDB(Redis DataBase)是在不同的时间点,将redis存储的数据生成快照并存储到磁盘等介质上

特点:

  • 周期性
  • 不影响数据写入(RDB会启动子进程,备份所有数据当前进程,继续提供数据的读写,当备份完成才替换老的备份文件)
  • 高效(一次性还原所有数据)
  • 完整性较差(故障点到上一次备份之间的数据无法恢复)

AOF(Append Only File)将redis执行过的所有写指令(每秒钟)记录在日志中,在下次redis重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了

特点:

  • 实时性
  • 完整性较好
  • 体积大:记录数据的指令,删除数据的指令都会被记录下来

如何选择方式

  • 缓存,不用开启任何的持久化方式
  • 双开,因RDB数据不实时,但同时使用两者时服务器只会找AOF文件,所以RDB留作万一的手段。


配置持久化

RDB默认开启

查看开启状态

vim /redis-4.0.9/redis.conf

#dbfilename:持久化数据存储在本地的文件
dbfilename dump.rdb

#dir:持久化数据存储在本地的路径,如果是在/redis/redis-3.0.6/src下启动的redis-cli,则数据会存储在当前src目录下
dir ./

##snapshot触发的时机,save <seconds> <changes>
##如下为900秒后,至少有一个变更操作,才会snapshot
##对于此值的设置,需要谨慎,评估系统的变更操作密集程度
##可以通过“save “””来关闭snapshot功能
#save时间,以下分别表示更改了1个key时间隔900s进行持久化存储;更改了10个key300s进行存储;更改10000个key60s进行存储。
save 900 1
save 300 10
save 60 10000

##当snapshot时出现错误无法继续时,是否阻塞客户端“变更操作”,“错误”可能因为磁盘已满/磁盘故障/OS级别异常等
stop-writes-on-bgsave-error yes

##是否启用rdb文件压缩,默认为“yes”,压缩往往意味着“额外的cpu消耗”,同时也意味这较小的文件尺寸以及较短的网络传输时间
rdbcompression yes


AOF默认关闭

修改配置文件reds.conf:appendonly yes

##此选项为aof功能的开关,默认为“no”,可以通过“yes”来开启aof功能  
##只有在“yes”下,aof重写/文件同步等特性才会生效
appendonly yes

##指定aof文件名称
appendfilename appendonly.aof

##指定aof操作中文件同步策略,有三个合法值:always everysec no,默认为everysec
appendfsync everysec

##在aof-rewrite期间,appendfsync是否暂缓文件同步,"no"表示“不暂缓”,“yes”表示“暂缓”,默认为“no”
no-appendfsync-on-rewrite no

auto-aof-rewrite-min-size 64mb
触发aof rewrite的最小文件尺寸

auto-aof-rewrite-percentage 100
当Aof log增长超过指定比例时,重写log file, 设置为0表示不自动重写Aof 日志,重写是为了使aof体积保持最小,而确保保存最完整的数据。


举报

相关推荐

0 条评论