1.redis持久化

在客户端发布save的过程中有可能造成阻塞,如一千万条数据同时保存并生成二进制RDB文件的时候,此时就会延迟堵塞。

文件策略是如果存在老的RDB文件,会用新的文件替代老的文件如下图所示:

对于bgsave而言,它会利用linux中的fork()函数生成一个redis的子进程(fast的意思是相对来说速度比较快,但是当量大的时候依旧有可能阻塞主线程),然后再生成RDB文件,并且将成功生成的消息(bgsave successfully)返回告诉主进程,并响应客户端如下图所示:

5.save与bgsave的对比:所说的阻塞对比当量小的时候几乎没区别

6.若客户端不发布save的命令,redis也可以进行保存的操作配置。不论是60秒发布10000条,还是300秒发布10条,还是900秒发布一条信息都会进行更新保存并生成RDB文件。利用的就是bgsave来保存生成,(但是这种操作也有不合适的弊端,就是文件写入过于频繁,60秒就需要更新10000条)

 对于生成的RDB文件一般用dump.rdb的格式来保存。

 最佳配置:

  :当保存出错时是否停止写入

:是否要压缩文件,rdb文件会在主从之间进行拷贝,采用压缩的形式可以加快拷贝速度

   :是否对rdb文件进行校验检验

· :文件名一般用端口号来区分

  :一般情况下不选用根目录来保存,而是选择大的硬盘路径来保存

总结RDB:

  1耗性能,耗时(对所有数据进行dump,其次写会消耗很多的cpu和内存(IO性能),是个on的过程(copy-on-write策略))

  2不可控,丢失数据(定时保存或多或少会丢失一部分数据)

  

AOF:

  AOF的三种策略:always,everysec,no

        always:写的命令会进入到缓存区中,每条命令fsync到硬盘中生成AOF文件

        everysec:写的命令会进入到缓存区中,每秒都会刷新fsync到硬盘中生成AOF文件(出现故障的时候有可能会丢失一秒的数据)

        no:写的命令会进入到缓存区中,会根据不同的系统来选择写入还是不写入,不需要人为考虑,系统自动判断

  一般情况下根据各方面权衡会默认选择使用everysec的方案

  

  

  7.当高并发或者时间推移日志文件会变得冗余,很消耗内存,此时可以选择使用AOF重写,AOF重写可以减少硬盘的占用量,加速恢复速度,

  AOF重写的两种实现方式:

        1.bgrewriteaof:和bgsave类似

        2.AOF重写配置

  配置:no-appendfsync-on-rewrite :是否关闭重写

     。。。。perscentage 100:表示增长率

    

RDB和AOF的取舍:

RDB:集中管理可以一次性写入大量,但不要太频繁,因为对机器内存cpu等影响比较大,

  AOF:建议一直开着,也体现出redis持久化的特点,等到一定时间可以关闭,毕竟开缓存也需要一定的开销

      集中管理利用fork(),但是也有可能出现内存爆满的情况

RDB:集中管理可以一次性写入大量,但不要太频繁,因为对机器内存cpu等影响比较大,

最佳策略:小分片:利用redis进行内存分配,每个内存分配最大4G,当然cpu的消耗也比较大

redis总结(一)的持久化的取舍和选择以及作用的更多相关文章

  1. Redis 入门到分布式 (五) Redis持久化的取舍和选择

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) Redis持久化的取舍和选择 持久化的作用 RDB AOF RDB和AOF的选择 一.持久化的作用   ...

  2. Redis系列三之持久化

    一.Redis持久化 Redis是一个支持持久化的内存数据库,redis需要经常将内存中的数据同步到磁盘来保证持久化. redis提供了不同级别的持久化方法: Snapshotting(快照,默认方式 ...

  3. Redis教程(十):持久化详解

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/137.html 一.Redis提供了哪些持久化机制: 1). RDB持久化 ...

  4. Redis解决强制关闭Redis快照导致不能持久化错误

    今天在使用composer添加Redis缓存的时候,运行Redis发生错误: 127.0.0.1:6379> set dachou dadachou (error) MISCONF Redis ...

  5. Redis的两种持久化方式-快照持久化和AOF持久化

    Redis为了内部数据的安全考虑,会把本身的数据以文件形式保存到硬盘中一份,在服务器重启之后会自动把硬盘的数据恢复到内存(redis)的里边,数据保存到硬盘的过程就称为"持久化"效 ...

  6. Docker下redis的主从、持久化配置

    Docker下redis的主从.持久化配置 redis是k-v型nosql数据库,支持字符串(string).列表(list).集合(set).散列(hash).有序集合(zset:形如member: ...

  7. 第一章· Redis入门部署及持久化介绍

    Redis简介 Redis安装部署 Redis持久化 Redis简介 软件说明: Redis是一款开源的,ANSI C语言编写的,高级键值(key-value)缓存和支持永久存储NoSQL数据库产品. ...

  8. Spring+Redis集成+关系型数据库持久化

    本篇文章主要介绍了"Spring+Redis集成+关系型数据库持久化",主要涉及到Spring+Redis集成+关系型数据库持久化方面的内容,对于Spring+Redis集成+关系 ...

  9. Redis学习笔记9--Redis持久化

    redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到磁盘来保证持久化.redis支持四种持久化方式,一是 Snapshotting(快照)也是默认方式:二是Appen ...

随机推荐

  1. 删除List集合中的元素方法

    List集合是我们平时使用的最多的集合了,一般用来存放从数据库中查询的对象数据,但有时我们会从中筛选不需要的数据,第一次使用这种方式: 使用增强for循环遍历,使用list的remove方法删除不符合 ...

  2. radio(单选框)反复选中与取消选中

    做个记录,以便需要拿取 <script type="text/javascript"> $(function(){ 第一种 $('input:radio').click ...

  3. HDU 6521 Party

    6521 思路: 线段树玄学剪枝, 俗称吉司机线段树. 代码: #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize ...

  4. .Net Core使用视图组件(ViewComponent)封装表单文本框控件

    实例程序的界面效果如下图所示: 在表单中的搜索条件有姓名,学号,成绩.他们在一行中按照水平三等分排列. 在cshtml中用html实现上述表单效果的的代码如下: <form class=&quo ...

  5. linux shell 脚本 svn自动更新项目并且打包 、发布、备份

    这里先准备一个配置文件,用于保存svn地址.目的路径.用户名跟密码 配置文件名问:toolConfig.properties #svn地址 svnAddress=https://192.168.1.2 ...

  6. oracle 将一个表复制到另外一个表里 .

    复制一个表到另一个表.视图.临时表 博客分类: oracle Oracle数据结构软件测试SQL 创建一个表new_table和old_table表结构一样(没有old_table的记录) creat ...

  7. 20190320_head first pyhton学习笔记之构建发布

    1.把代码nester.py放入文件夹nester中,在文件夹中再新建一个setup.py文件,文件内容如下: from distutils.core import setup setup( name ...

  8. 判断PDF文件是否相同(通过二进制流判断)

    一.Java代码 1.将PDF转为字节流    /*     * @step     *  1.使用BufferedInputStream和FileInputStream从File指定的文件中读取内容 ...

  9. 2018 HDU多校第三场赛后补题

    2018 HDU多校第三场赛后补题 从易到难来写吧,其中题意有些直接摘了Claris的,数据范围是就不标了. 如果需要可以去hdu题库里找.题号是6319 - 6331. L. Visual Cube ...

  10. gcc/g++编译器的安装与说明

    gcc/g++编译器的安装与说明 1.gcc/g++编译器的安装 gcc yum install gcc g++ yum install gcc-c++ 2.gcc/g++的作用 将c/c++源代码编 ...