博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Redis持久化
阅读量:7212 次
发布时间:2019-06-29

本文共 1231 字,大约阅读时间需要 4 分钟。

持久化:即以文件的形式保存到硬盘中。Redais持久化有两种,RDB(Redis DB)和AOF(AppendOnlyFile)

 

一、RDB:将服务器包含的所以数据库数据以二进制的形式保存到硬盘,保存文件可通过redis配置文件设置

Reids创建RDB文件有三种常见的方式

1、在服务器执行客户端发送的SAVE命令,执行该命令时,服务器将被阻塞,无法处理客户端发送的请求。    

2、服务器执行客户端发送的BGSAVE命令,执行该命令时,服务器会创建一个新进程进行持久化,不会造成阻塞,但会消耗额外内存

3、使用sava配置选设置的自动保存条件被满足,服务器自动执行BGSAVE

默认三条策略(只要有一条策略满足就会执行),其中Save 300 10表示距离上次创建文件已经过去300秒,并且服务器的所有数据库总共已经发生了至少10次修改,则执行BGSAVE。每次创建RDB文件后,计时器自动清零。

缺点:创建RDB文件需要将服务器所有数据保存起来,很耗费资源和时间,创建RDB文件太频繁会影响服务器性能。

 

二、AOF:以追加的形式将命令写入AOF文件末尾,AOF文件存储了服务器执行过的所有数据库修改的命令

1、默认情况下是不开启的,有三个策略。

1)alway:服务器每执行应该命令就调用一次fdatasync,将缓存区里面的数据写入硬盘

2)Everysec:服务器没秒重调用一次fdatasync,这种策略最多丢失一秒的数据

3)no:服务器不主动调用fdatasync,有操作系统决定什么时候具体写入硬盘时间

注:目前常见操作系统中,执行系统调用write函数,将一些内容写入某个文件里面时,为了提高效率,通常不会直接将内容写到硬盘里面,而是现将内容放入一个内存缓冲区里,等到缓冲区被填满,或者用户执行fsync调用和fdatasync调用时才将存储在缓存区里的内容真正写入硬盘中

2、触发重写AOF(将aof文件的命令进行合并、优化)

例子:写入两个命令set name xiaoming,set name xiaohong,重写后的结果就是set name xiaohong

1)客户端向服务器端发送BGREWRITEAOF命令

2)通过设置配置选项来让服务器自动执行BGREWRITEAOF命令

auto-aof-rewrite-min-size 64mb:表示触发AOF重写所需最小体积,只要AOF文件的体积大于等于64mb,服务器就会考虑是否需要进行AOF重写

Auto-aof-rewrite-percentage 100:表示当AOF文件的体制大于auto-aof-rewrite-min-size指定的体制,并且超过上次重写之后体积的100%时,就会触发AOF重写

 

三、还原备份的数据:只需将备份的数据放到配置文件设置的位置,重启服务器即可

 

 

转载于:https://www.cnblogs.com/chensr/p/7674946.html

你可能感兴趣的文章
一张时序图让你看懂:脏读、不可重复读
查看>>
js创建对象的几种方法
查看>>
浮点数杂想
查看>>
摧枯拉朽,说说ES6的三把火
查看>>
Java/Android基础-02
查看>>
nginx代理响应报文体不全解决思路
查看>>
前端性能优化 —— 项目瘦身
查看>>
全球人形机器人接连突破 拟人度越来越高
查看>>
vue按需加载
查看>>
创成汇2019年参加创新创业大赛都能获得什么?
查看>>
vue双向数据绑定原理
查看>>
美研究最新生物活性玻璃 可消灭致命的细菌
查看>>
内部类
查看>>
Vue中数组赋值问题
查看>>
APK path is not specified for module
查看>>
Linux运维宝典:最常用的150个命令汇总
查看>>
使用RecycleView实现无限滚动的日历
查看>>
Golang Failpoint 的设计与实现
查看>>
小微贷是美团的上坡之路?
查看>>
js 将线性数据转为树形
查看>>