卑微小吴励志写博客第26天。
持久化简介
什么是持久化?
简单的讲就是数据从内存持久化到硬盘,防止断电或者突发情况下数据丢失。
持久化保存什么?
一种是快照形式,保存数据本身;另一种是保存数据的操作过程,关注点在与数据的操作过程。
RDB
RDB启动方式
谁?什么时间?干什么事?
命令执行: save
- 谁:redis操作者(用户)
- 什么时间:即时(随时进行)
- 干什么:保存数据
作用:手动保存一次保存操作,快照信息。
一般生成的是名字为dump.rdb文件。
save相关配置,在配置文件中修改
注意:redis是单线程的,所以在执行save指令的时候,如果执行时间很长,那么直到当前RDB过程执行完,才能执行下面的命令,有可能会造成长时间的阻塞,线上不建议使用。
怎样处理?
后台执行
指令:bgsave。
作用:手动启动命令后,后台保存操作,但不会立即执行。
bgsave指令工作原理
注意:bgsave命令是save命令的优化,可以解决save命令的阻塞问题。redis内部涉及到RDB的操作都用的是bgsave命令,save可以弃用了。
配置文件中有一个关于bgsave的配置:
问题?
前面的save和bgsave都是手动执行的,忘了怎么办?如果不知道数据是否变化了,何时保存?数据没有变化保存是没有意义的。
自动执行:
- 谁:redis服务器发起指令(基于条件)
- 什么时间:满足条件
- 干什么:bgsave保存数据。
配置(而不是指令)
save second changes
作用:
满足限定时间内key的变化数量达到指令数量进行持久化。
参数:
second:监控时间范围
changes:监控key的变化数量