Redis总结(七)——配置文件详解

前言


Redis的配置文件中配置的属性有很多,具体每个属性都是什么意思,该怎么配置,通过之前的项目实战有了相关的认识。这次主要对Redis的持久化机制——RDB和AOF这两种方式涉及到的一些参数或相关知识做简单总结。配置文件中其他参数解释和以参考这里。

RDB


RDB按照规则定时将内存的数据同步到磁盘,产生dump.rdb文件。
以下几种情况会触发RDB:
➢自己配置的快照规则:save
指定在多长时间内,有多少次更新操作,就将数据同步到数据文件。

# 900秒(15分钟)之后,且至少1次变更
# 300秒(5分钟)之后,且至少10次变更
# 60秒之后,且至少10000次变更
save 900 1
save 300 10
save 60 10000

save或者bgasve

save:执行内存的数据同步到磁盘的操作,这个操作会阻塞客户的请求
bgsave:在后台一步执行快照操作,这个操作不会阻塞客户端的请求

➢执行flushall的时候
清楚内存的所有数据,只要快照的规则不为空,也就是save规则存在,那么Redis就会执行快照
➢执行快照的时候
快照的实现原理:
redis会使用fork函数复制一份当前进程的副本(子进程),fork进程负责把内存的数据同步到磁盘的临时文件,父进程继续处理客户端请求
redis(rdb)的优缺点:
1、可能会存在数据丢失的情况(缺点)
2、可以最大化redis的性能(优点)

redis-check-dump:Redis dump 数据文件的修复工具

AOF


AOF会把redis执行的每一条命令追加到磁盘文件中
实战:
修改redeis.conf中的appendonly 为yes,重启后执行对数据的变更命令,会在bin目录下生成对应的.aof文件,aof文件会记录所有的操作命令
appendonly yes
appendfilename "appendonly.aof"

如下两个参数可以去对aof文件做优化:
auto-aof-rewrite-percentage 100
表示当前aof文件大小超过上一次aof文件大小的百分之多少的时候会进行重写。如果之前没有重写过,以启动时aof文件的大小为准。

auto-aof-rewrite-min-size 64mb
限制允许重写最小aof文件大小,也就是文件大小小于64mb的时候,不需要进行优化。
同步磁盘数据:
redis每次更改数据的时候,aof机制都会将命令记录到aof文件,但是实际上由于操作系统的缓存机制,数据并没有实时写入到硬盘,而是进入硬盘缓存。再通过硬盘缓存机制去刷新保存到文件。

# appendfsync always    
#每次执行写入都会进行同步,这个是最安全但是是效率比较低的方式
appendfsync everysec   每一秒执行
# appendfsync no 
#不主动进行同步操作,由操作系统去执行,这个是最快但是最不安全的方式

aof文件损坏以后如何修改:
对于错误格式的AOF文件, 先进行备份, 然后采用redis-check-aof--fix命令进行修复, 修复后使用diff-u对比数据的差异, 找出丢失的数据, 有些可以人工修改补全。

总结


两种持久化策略可以同时使用,也可以使用其中的一种。如果同时使用的话,那么Redis重启时,会优先使用AOF文件来还原数据。

你可能感兴趣的:(-----数据库,Redis学习)