Redis持久化
- redis有两种持久化操作 第一种是RDB ,第二种是AOF
- redis中的数据可以存储到磁盘中,然后再redis启动的时候将磁盘中的数据从磁盘中读取出来。
- redis默认的持久化操作默认的是使用RDB。
RDB
- rdb的备份的执行流程:
redis会单独的启动一个子进程来进行持久化操作,先将redis中的数据先存储到一个临时的文件夹中,等待所有的数据存储到了临时文件中去后,再将临时文件中的数据保存到持久化的文件中去,主线程不参与这个备份存储操作,这样就可以极大的提高性能问题,这个就叫做写时复制技术,但是使用RDB持久化操作会有一个问题,就是最后一次的备份数据可能会被丢失,因为当最后一次备份的时候,如果服务器宕机了,或者redis中断运行了,那么最后再redis中的数据就不会存储到磁盘中去。 - 这个是生成文件的默认名字。
- 这个是默认存储的位置
- 可以设置指定时间进行存储:
# 代表的是 900秒钟之内如果进行redis的数据操作了1次的话,就会进行写的操作
save 900 1
5. rdb的使用优势:
1. 对比AOF占用更少的磁盘空间
2. 启动恢复的速度块
3. 适合大规模的数据备份恢复
6. 但是一般只适合对数据一致性要求不高的情况下使用
AOF
- AOF是什么?
以日志的形式进行数据的存储,只会记录写的操作,不会记录读的操作,只能进行追加文件的操作,不能进行修改文件的操作。 - AOF的执行流程:
1. 当请求执行写的操作的时候,会将数据缓冲到AOF的缓冲区中。
2. 然后同步频率策略会将AOF的缓冲区中的数据写到磁盘中去。
AOF的同步频率有三个选项:
默认的是everysec
always : 代表的是只要有写的操作就会立马同步,这个对性能有一定的损耗,保持数据的完整一致性。 everysec : 每秒执行一次,按照秒来执行,但是如果机器宕机了或发生意外的话,这一秒的数据就会丢失 no : 代表的是不主动的进行数据的保存,等待操作系统去通知。
- 如果想使用AOF方式进行磁盘持久化操作的话,需要再redis.conf文件里面修改成yes,默认是no。
- 如果AOF和RDB同时开启了,默认会使用AOF方式进行数据的持久化操作.
- 优势:
备份机制更稳健,丢失数据概率更低。
可读的日志文本,通过操作AOF稳健,可以处理误操作。 - 劣势
比起RDB占用更多的磁盘空间。
恢复备份速度要慢。
每次读写都同步的话,有一定的性能压力。