补充一个知识

缓存:数据可以丢,保证速度。
数据库:数据是绝对不能丢的,保证速度+持久性,内存中的数据是掉电易失的。

存储层:

  • 快照/副本
  • 日志文件

$$优先级高于管道

fork()

fork是系统调用,copy on write是内核机制。

写时复制
在fork子进程的时候,只拷贝指针,并不发生内存的复制。
只有当其中的某一个进程试图对该区域进行写操作时,内核就会在物理存储器中为子进程开辟一个新的物理页面,将需要写的区域将父进程的内容复制一份给子进程,然后对新的物理页面进行写操作。
这时就是实现了对不同进程的操作而不会产生影响其他的进程,同时也节省了很多的物理存储器。
并且根据经验来看,不可能父子进程将所有数据都改一遍。下图redis也用了这个机制,而且redis的子进程不会去修改数据:

  • 可以用ref记录被引用的数量

redis 子进程用来RDB持久化落盘,父进程用来提供服务:

RDB:快照,副本

时点性,是每隔一段时间存一下

  • 阻塞,redis不对外提供服务

AOF:追加日志 append only file

redis的写操作记录到文件中,类似于mysql的binlog

  • 非阻塞,redis继续对外提供服务
  • 同时数据能够落地
  • RDB和AOF可以同时开启。如果开启了AOF,重启服务器的时候,只会用AOF恢复。
  • 4.0版本之后,AOF中包含RDB全量,增加记录新的写操作。

RDB的改进

Redis实战(五):Redis的持久化RDB、fork、copyonwrite、AOF、RDBAOF混合使用相关推荐

  1. 深入剖析Redis系列(五) - Redis数据结构之字符串

    前言 字符串类型 是 Redis 最基础的数据结构.字符串类型 的值实际可以是 字符串(简单 和 复杂 的字符串,例如 JSON.XML).数字(整数.浮点数),甚至是 二进制(图片.音频.视频),但 ...

  2. redis(二)redis实战 使用redis进行文章的排序

    2019独角兽企业重金招聘Python工程师标准>>> http://www.beckbi.cn/?p=172 redis实战使用redis进行文章的排序 转载于:https://m ...

  3. Redis实战之Redis + Jedis

    用Memcached,对于缓存对象大小有要求,单个对象不得大于1MB,且不支持复杂的数据类型,譬如SET 等.基于这些限制,有必要考虑Redis! 相关链接: Redis实战 Redis实战之Redi ...

  4. Redis实战 - 09 Redis BitMaps 实现用户签到,统计签到次数,统计签到情况等功能

    文章目录 1. 需求分析 2. 设计思路 3. 用户签到和统计连续签到的次数 1. 签到控制层 SignController 2. 签到业务逻辑层 SignService 3. 测试 4. 按月统计用 ...

  5. redis学习(五) redis实现购物车

    <redis实战> 第二章 每个用户的购物车都是一个散列,这个散列存储了商品ID与商品订购数量之间的映射 对商品数量的验证由web应用程序负责,我们要做的就是在商品订购的数量出现变化时,对 ...

  6. redis之二十八 -- Redis实战:Redis 主从同步

    主从同步(主从复制)是 Redis 高可用服务的基石,也是多机运行中最基础的一个.我们把主要存储数据的节点叫做主节点 (master),把其他通过复制主节点数据的副本节点叫做从节点 (slave),如 ...

  7. 【Redis实战】Redis是什么?

      Redis(Remote Dictionary Server)是一个key-value的NoSQL产品,数据都是缓存在内存中,周期性的数据持久化.   Redis是一个开源的使用ANSI C语言编 ...

  8. redis实战:使用redis实现自动补全

    转载:http://blog.csdn.net/u011250882/article/details/48632379 如果我想输入"雄英"来找到游戏库中的所有带有这两个字的游戏, ...

  9. Redis实战 - 11 Redis GEO 实现附近的人功能

    各种社交软件里面都有附件的人的需求,在该应用中,我们查询附近1公里的食客,同时只需查询出20个即可. 文章目录 1. Redis GEO常用命令 2. 上传用户地理位置 1. RedisKeyCons ...

  10. Redis实战 - 15 Redis事务机制和乐观锁实现

    文章目录 1. Redis事务简介 2. Redis事务的操作命令 3. Redis的事务回滚 4. Redis监控事务 1. Redis事务简介 在 Redis 中,也存在多个客户端同时向 Redi ...

最新文章

  1. java代码读取dbsequence的值_MongoDB自增序列实现 - Java多线程同步 synchronized 用法
  2. 知云文献翻译登录时不显示二维码,显示二维码后扫描登录不跳转解决方案
  3. [C++] 我们需要掌握多少语法细节
  4. 调用手机相机相册_如果你用华为手机拍照!记得开启专业模式,照片好看十倍不止...
  5. 多线程顺序交替打印ABCD
  6. rabbitmq导出队列_消息队列BCMQ在大云运维管理平台BCDeepWatch中的应用
  7. Oracle表的并行度
  8. 服务器性能评价体系,基于ServerScope平台TPCW性能评价
  9. Nodejs V8引擎 fast property lookup
  10. Python技术知识清单(数据科学)
  11. C#中可以使用正则表达式来过滤html字符
  12. Java中文汉字转汉语拼音
  13. 学子商城项目1(项目 第十六阶段)
  14. Windbg(蓝屏分析工具)v10.0.18362.1版本更新
  15. mysql有rollup函数吗_MySQL-with rollup函数运用
  16. jdk中运行java程序的工具,采用JDK工具编译运行java程序
  17. 《云周刊》第121期:图管够!灌篮高手、女儿国…阿里日_这帮程序员太会玩了!...
  18. 2022基于云开发的去水印小程序源码
  19. 心电算法准确性评价总结
  20. 既然android service是运行在主线程中的,那service还有什么用?

热门文章

  1. CodeForces - 706D Vasiliy's Multiset(字典树删除操作)
  2. html5 fc,HTML5_mob604756fc093d的技术博客_51CTO博客
  3. cmi编码用c语言实现,CMI编码与解码
  4. 【Boost】boost库中function和bind一起使用的技巧(二)
  5. chromium net android移植
  6. 边缘计算、区块链、5G,哪个能走的更远
  7. 深入理解RCU | RCU源码剖析
  8. 为什么说项目管理是每个人必备的底层能力?
  9. OS- -调度(一)
  10. 二叉堆详解实现优先级队列