起因:随着项目的进一步推广,数据量的增大,直接访问mysql数据库获取数据所使用的时间越来越长,为解决当前主要矛盾,决定引入redis非关系型数据库作为缓存层,使得数据并不能直接命中数据库,减少访问数据库带来的压力,从而加快运行速度。
1. RDB模式
1.1. RDB模式分析
1、什么是RDB
每隔一段时间,把内存中的数据写入磁盘,恢复的时候,他会自动从工作区拿出来进行恢复
2、RDB的优劣势
优势
- 每隔一段时间,全量备份
- 备份简单,可以直接传输文到其他地方
- 备份的过程中会fork一个新的进程来进行文件的存储
劣势
- 发生故障时,会丢失上次备份到当前时间的数据
- fork的进程会和父进程一摸一样,会导致内存随时膨胀两倍
1.2. RDB配置文件
save 900 1 #900秒内变更1次才触发bgsave
save 300 10
save 60 10000
# 如果不想开启RDB,就是配置成 save ""
dbfilename dump.rdb #rdb保存的文件名
dir ./ #就是存放我们RDB备份文件的目录
#yes:如果save过程出错了则停止Redis写操作
#no:没所谓save是否出错
stop-writes-on-bgsave-error yes
#开启RDB压缩
rdbcompression yes
#进行CRC64算法校验,有10%的性能损耗
rdbchecksum yes
1.3. 手动备份RDB
手动触发有两个命令
-
save命令
在执行的时候会阻塞Redis的服务,直到RDB文件完成才会释放我们Redis进程恢复读写操作 -
bgsave命令
执行bgsave的时候会在后台fork一个进程进行RDB的生成,不影响主进程的业务操作
1.4. 使用RDB恢复数据
只需要将dump.rdb移动到我们redis.conf配置的dir(dir ./)目录下,就会在Redis启动的时候自动加载数据到内存,但是Redis在加载RDB过程中是阻塞的,直到加载完毕才能恢复操作
redis-cli> config get dir
2.AOF模式分析
RDB会丢失最后一次备份和系统宕机之间的数据,可能你觉得无所谓,所以就需要增量备份的过程了,什么Redis的增量备份,就是AOF,有点像MySQL的Binlog
2.1 AOF的特点
特点
- 以日志形式来记录用户的请求和写操作,读操作不会记录
- 文件是追加的形式而不是修改的形式
- redis的aof恢复其实就是从头到尾执行一遍
优势
- AOF更加耐用,可以以秒为单位进行备份,如果发生问题,之丢失一秒的数据
- 以log日志的方式进行存放和追加数据,如果磁盘已经很满了,会执行redis-check-aof工具
- 当aof文件太大的时候,redis在后台会自动重写aof,相当于把redis的aof文件进行压缩
- AOF日志包含所有写操作,便于redis的恢复
劣势
- 相同的数据,AOF比RDB大
- AOF比RDB同步慢
- 一旦AOF文件出现问题,数据就会不完整
2.2. AOF配置文件
#开启AOF
appendonly yes
#AOF的文件名设置
appendfilename "appendonly.aof"
# aof同步备份的频率设置
# no : 写入aof文件,不等待磁盘同步
# everysec :每秒讲写操作备份,推荐使用
# always :每次操作都会备份,数据是安全和完成,但性能会比较差
appendfsync everysec
# 重写的时候是否要同步,yes则不同步,no同步阻塞可以保证数据安全
no-appendfsync-on-rewrite no
# 重写机制(压缩机制):避免文件越来越大,将key的重复值合并,重写的时候会触发fork一个新进程来操作
# 触发条件就是下面两个都满足才触发
# 上面配置no,重写触发后会fork进程并阻塞主进程无法写入导致等待,所以两个值可以设置小点让重写快速阻塞完毕
# 1.现有的文件比上次多出100%:上次压缩完2G,现在已经4G了如果是50%就是3G
auto-aof-rewrite-percentage 100
# 2.现有的文件已经超过100mb了
auto-aof-rewrite-min-size 100mb
2.3. 到底是使用RDB还是AOF
Redis在RDB和AOF同时开启的过程中,重启后会优先加载AOF文件
- AOF文件在开启后就会自动创建一个空文件
- 重启后Redis会优先加载AOF:默认是以秒为单位进行保存的,在逻辑上比RDB的数据完整
解决方案:
# 在redis客户端在线更改
config get appendonly
config set appendonly yes
不要以为每天把功能完成了就行了,这种思想是要不得的,互勉~!
网友评论