一.持久化:

快照文件RDB

保存“开始”创建新快照一刻的内存快照,创建过程的内存变化不会被记录

创建快照的办法有几种

1.客户端可以通过想Redis发送BGSAVE来创建一个快照,redis会调用fork来创建一个子进程,然后子进程负责将快照写入硬盘,而父进程则继续处理命令请求

2.客户端想redis发送SAVE命令创建快照,接到SAVE命令的Redis服务器在快照创建完毕之前将不再响应任何其他命令。

3.save 60 10000,当60秒内有10000次写入,redis就会自动触发BGSAVE命令

4.SHUTDOWN请求时,会执行SAVE命令

5.当一个Redis服务器连接另一个Redis服务器,并向对方发送SYNC命令来开始一次复制操作的时候,如果主服务器目前没有在执行BGSAVE操作,或者主服务器并非刚刚执行完BGSAVE操作,那么主服务器就会执行BGSAVE

适用于丢失一部分数据也不会造成问题的应用程序,或者有办法恢复的场景

问题:

当内存很大时,fork子进程(同步?为什么不用线程),会导致系统长时间停顿,根据机器性能每1G增加10~20毫秒或200~300毫秒,如果占用了20GB,标准硬件上上运行BGSAVE所创建的子进程将导致Redis停顿200~400毫秒,在一台拥有68GB内存的Xen虚拟机上对一个占用50GB内存的redis服务器执行BGSAVE命令的话,光是创建子进程就需要花费15秒以上,而生成快照则需要花费15~20分钟。

AOF

写命令追加到AOF文件的末尾。always,everysec,no

问题:

aof文件的体积大小。BGREWRITEAOF命令通过移除AOF文件的冗余命令来重写AOF文件,使AOF文件的体积变得尽可能小。BGREWRITEAOF与BGSAVE相似,redis会创建一个子进程,然后由子进程负责对AOF文件进行重写,所以还是会发生页表等进程资源copy给子进程时带来的消耗

auto-aof-rewrite-percentage 100和auto-aof-rewrite-min-size 64mb当aof文件的体积大于64MB,并且AOF文件的体积比上一次重写之后的体积大了至少一倍(100%)的时候,redis将执行BGREWRITEAOF命令。

二.复制

slaveof host port    从服务器在进行同步时,会清空自己的所有数据。 不支持主主复制。

主服务器执行BGSAVE时会使用缓冲区记录被执行的写命令,待快照文件发送完毕,开始向从服务器发送存储在缓冲区里的写命令。

三.事务

watch multi exec

四.流水线

multi exec

当Redis从一个客户端那里收到你multi命令时,redis会将这个客户端之后发送的所有命令都放入到一个队列里面,直到这个客户端发送EXEC命令为止。然后redis就会在不被打断的情况下,一个接一个的执行存储在队列里面的命令。

2.验证dubbo。router层 集群容错负载均衡

3.Spring技术内幕

redis-cli 持久化,复制,哨兵,事务,流水线的更多相关文章

  1. Redis事务,持久化,哨兵机制

    1 Redis事务 基本事务指令 Redis提供了一定的事务支持,可以保证一组操作原子执行不被打断,但是如果执行中出现错误,事务不能回滚,Redis未提供回滚支持. multi 开启事务 exec 执 ...

  2. redis的持久化 与事务管理

    1. redis的持久化 Redis的持久化主要分为两部分:RDB(Redis DataBase), AOF(Append Only File) 2. 什么是redis 的持久化        在指定 ...

  3. 解密Redis的持久化和主从复制机制

    Redis持久化 Redis 提供了多种不同级别的持久化方式: RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot). AOF 持久化记录服务器执 ...

  4. java架构之路-(Redis专题)Redis的主从、哨兵和集群

    我们使用的redis,单机的绝对做不到高可用的,万一单机的redis宕机了,就没有备用的了,我们可以采用集群的方式来保证我们的高可用操作. 主从架构 大致就是这样的,一个主节点,两个从节点(一般两个就 ...

  5. redis + 主从 + 持久化 + 分片 + 集群 + spring集成

    Redis是一个基于内存的数据库,其不仅读写速度快,每秒可以执行大约110000的写操作,81000的读取操作,而且其支持存储字符串,哈希结构,链表,集合丰富的数据类型.所以得到很多开发者的青睐.加之 ...

  6. 关于redis的主从、哨兵、集群

    关于redis主从.哨兵.集群的介绍网上很多,这里就不赘述了. 一.主从 通过持久化功能,Redis保证了即使在服务器重启的情况下也不会损失(或少量损失)数据,因为持久化会把内存中数据保存到硬盘上,重 ...

  7. Redis搭建多台哨兵

    搭建多台哨兵 完成spring管理多台哨兵 学习redis如何数据持久化如何管理内存 Redis集群搭建 集群测试 Spring管理集群 2 搭建多台哨兵 2.1 搭建步骤 2.1.1 修改6379哨 ...

  8. Redis高可用之哨兵模式Sentinel配置与启动(五)

    0.Redis目录结构 1)Redis介绍及部署在CentOS7上(一) 2)Redis指令与数据结构(二) 3)Redis客户端连接以及持久化数据(三) 4)Redis高可用之主从复制实践(四) 5 ...

  9. Redis实战——redis主从备份和哨兵模式实践

    借鉴:http://redis.majunwei.com/topics/sentinel.html     https://blog.csdn.net/u011784767/article/detai ...

  10. redis之 主从复制和哨兵

    一.Redis主从复制 主从复制:主节点负责写数据,从节点负责读数据,主节点定期把数据同步到从节点保证数据的一致性 1. 主从复制的相关操作 a,配置主从复制方式一.新增redis6380.conf, ...

随机推荐

  1. 冷饭新炒:理解断路器CircuitBreaker的原理与实现

    前提 笔者之前在查找Sentinel相关资料的时候,偶然中找到了Martin Fowler大神的一篇文章<CircuitBreaker>.于是花了点时间仔细阅读,顺便温习一下断路器Circ ...

  2. STM32入门系列-介绍STM32型号与功用

    作为STM32初学者,一般会选择购置一块开发板,因为在开发板上有很多已经集成好的模块,如红外模块.按键模块.LED模块.DAC模块.ADC模块.can模块.485模块.以太网模块.WiFi模块.蜂鸣器 ...

  3. js-循环遍历

    for循环 (最传统的方法) let arr=[a,b,c,d] for (var i = 0; i < arr.length; i++) { console.log(arr[i]); } fo ...

  4. ES6 小记

    1.let & const let:相当于var,不同的是没有变量提升,且只在声明的作用域内有效(新增了块级作用域). Const: 声明一个静态场量,一旦声明,常量的值就不能改变. for. ...

  5. Go语言如何像foreach一样有序遍历map

    目录 问题 解决 给key排序思路 开源实现 问题 Go语言的Map是无序遍历的,遍历一个map代码如下 package main import ( "fmt" ) func ma ...

  6. .NET 5.0正式发布,功能特性介绍(翻译)

    本文由葡萄城技术团队翻译并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 我们很高兴今天.NET5.0正式发布.这是一个重要的版本-其中也包括了C# ...

  7. 嗖嗖移动大厅 源代码 Java初级小项目

    今天给大家一个比较综合的项目:嗖嗖移动业务大厅.项目功能很多,概括的功能也很全面.吃透了这个项目,你的java基础部分已经非常棒了!!! 一 . 项目概述 技能要求  使用面向对象设计的思想  合 ...

  8. 这么好?中科图新项目经理教你开发LocaSpace功能

    LocaSpace是专注于实景三维数据应用的三维数字地球软件,为开发者提供强大.稳定的SDK服务,花费很少的精力即可在自己产品中集成某项功能.   我们将于2018年7月18日至7月20日举办&quo ...

  9. Spider--补充--Requests--session&cookie

    # session 与 cookie # 可能大家对session已经比较熟悉了,也大概了解了session的机制和原理,但是我们在做爬虫时如何会运用到session呢,就是接下来要讲到的会话保持. ...

  10. python_计算器

    import re from functools import reduce # 定义一个只计算两个数的乘法或除法的函数: def multiply_division(exp): if "* ...