| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 02.Redis---数据持久化 -> 正文阅读 |
|
[大数据]02.Redis---数据持久化 |
一、简介????????Redis是一种内存数据库,在断电时数据可能会丢失。比如你redis整个挂了,然后redis不可用了,如果没有持久化的话,redis就会丢失所有的数据,如果通过持久化将数据搞一份儿到磁盘上去,然后再定期同步到一些云存储服务上去,那么就可以保证一些数据不丢失,保证数据的可靠性。 持久化方式:
二、RDB方式持久化????????Rdb方式是通过手动(save-阻塞式,bgsave-异步)或周期性方式保存redis中key/value的一种机制,Rdb方式一般为redis的默认数据持久化方式.系统启动时会自动开启这种方式的持久化机制。 1.配置文件RDB方式的持久化是默认开启的,也可按规则自己配置,打开redis.conf文件 ?这三行的意思是每隔60s/300s/900s,如果有超过10000/10/1个key发生了变更,那么就生成一个新的dump.rdb文件,就是当前redis内存中完整的数据快照,这个操作也被称之为snapshotting(快照)。 ?这个意思是持久化rdb文件遇到问题时,主进程是否接受写入,yes 表示停止写入,如果是no 表示redis继续提供服务。 ?这个意思是在进行快照镜像时,是否进行压缩。yes:压缩,但是需要一些cpu的消耗。no:不压缩,需要更多的磁盘空间。根据自己的需求来配置 ?这个意思是有一个CRC64的校验就被放在了文件末尾,当存储或者加载rbd文件的时候会有一个10%左右的性能下降,为了达到性能的最大化,你可以关掉这个配置项。 ?Redis里面在网络传输和RDB备份的时候都会面临着数据出错的问题,因此采用了数据的校验。包括使用了CRC64的校验算法。CRC检验原理实际上就是在一个p位二进制数据序列之后附加一个r位二进制检验码(序列),从而构成一个总长为n=p+r位的二进制序列;附加在数据序列之后的这个检验码与数据序列的内容之间存在着某种特定的关系。如果因干扰等原因使数据序列中的某一位或某些位发生错误,这种特定关系就会被破坏。因此,通过检查这一关系,就可以实现对数据正确性的检验。 ?快照的文件名,可以自定义 2.测试持久性配置文件定义完后我们进行持久性测试 测试一:直接关闭redis查看数据是否存在 清除并添加测试数据 ?直接关闭再启动查看数据库数据 结果:数据没有丢失,这其实是一种安全的退出,再退出时会立刻生成一份完整的rdb快照,所以数据不会丢失。 测试二:打开两个客户端,一个把RDB文件删除,一个进行redis插入数据,我们再用kill的方式进行强杀进程之后查看数据是否存在 清除rdb文件 ? ?存入测试数据 ?强杀进程 ?启动redis查看数据 结果:出现了数据丢失现象 测试三:手动调用save(同步保存)或者bgsave(异步保存)执行rdb快照生成.然后杀掉redis进程,再重启检测是否还有刚刚保存的数据. 添加测试数据 杀死进程 ?启动redis查看数据是否存在 ? 结果:数据没有丢失,删除的文件又出现了? 3.知识点Redis中的save与bgsave的区别:
RDB持久化机制的优缺点: 优点:
缺点: 假如redis故障时,要尽可能少的丢失数据,那么RDB方式不太好,它都是每隔5分钟或更长时间做一次快照,这个时候一旦redis进程宕机,那么会丢失最近几分钟的数据。 三、AOF方式持久化Aof方式是通过记录写操作日志的方式,记录redis数据的一种持久化机制,这个机制默认是关闭的。 1.配置文件打开redis.conf文件进行配置 ?是否开启AOF,默认时关闭的 ?指定文件名称,自定义 ?Redis支持三种刷写模式:
?在日志重写时,不进行命令追加操作,而只是将其放在缓冲区里,避免与命令的追加造成DISK IO上的冲突。 设置为yes表示rewrite期间对新写操作不fsync,暂时存在内存中,等rewrite完成后再写入,默认为no,建议yes ?第一行的意思是当前AOF文件大小是上次日志重写得到AOF文件大小的二倍时,自动启动新的日志重写过程。 第二行的意思是当前AOF文件启动新的日志重写过程的最小值,避免刚刚启动Reids时由于文件尺寸较小导致频繁的重写。 2.测试写入数据,查看appendonly.aof文件的日志记录 ?删除RDB文件,写入测试数据,强杀进程并重启进行查看数据 ?发现数据还在,这是因为redis进程启动的时候,直接就会从appendonly.aof中加载所有的日志,把内存中的数据恢复回来。 3.知识点简述AOF方式中的rewrite操作: ????????redis中的可以存储的数据是有限的,很多数据可能会自动过期,也可能会被用户删除或被redis用缓存清除的算法清理掉。也就是说redis中的数据会不断淘汰掉旧的,只有一部分常用的数据会被自动保留在redis内存中,所以可能很多之前的已经被清理掉的数据,对应的写日志还停留在AOF中,AOF日志文件就一个,会不断的膨胀,最好导致文件很大。 AOF持久化机制的优缺点: 优点:
缺点:
总结:我们到底改如何选择持久化方式呢?
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 2:59:56- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |