redis-cli 持久化,复制,哨兵,事务,流水线
一.持久化:
快照文件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 持久化,复制,哨兵,事务,流水线的更多相关文章
- Redis事务,持久化,哨兵机制
1 Redis事务 基本事务指令 Redis提供了一定的事务支持,可以保证一组操作原子执行不被打断,但是如果执行中出现错误,事务不能回滚,Redis未提供回滚支持. multi 开启事务 exec 执 ...
- redis的持久化 与事务管理
1. redis的持久化 Redis的持久化主要分为两部分:RDB(Redis DataBase), AOF(Append Only File) 2. 什么是redis 的持久化 在指定 ...
- 解密Redis的持久化和主从复制机制
Redis持久化 Redis 提供了多种不同级别的持久化方式: RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot). AOF 持久化记录服务器执 ...
- java架构之路-(Redis专题)Redis的主从、哨兵和集群
我们使用的redis,单机的绝对做不到高可用的,万一单机的redis宕机了,就没有备用的了,我们可以采用集群的方式来保证我们的高可用操作. 主从架构 大致就是这样的,一个主节点,两个从节点(一般两个就 ...
- redis + 主从 + 持久化 + 分片 + 集群 + spring集成
Redis是一个基于内存的数据库,其不仅读写速度快,每秒可以执行大约110000的写操作,81000的读取操作,而且其支持存储字符串,哈希结构,链表,集合丰富的数据类型.所以得到很多开发者的青睐.加之 ...
- 关于redis的主从、哨兵、集群
关于redis主从.哨兵.集群的介绍网上很多,这里就不赘述了. 一.主从 通过持久化功能,Redis保证了即使在服务器重启的情况下也不会损失(或少量损失)数据,因为持久化会把内存中数据保存到硬盘上,重 ...
- Redis搭建多台哨兵
搭建多台哨兵 完成spring管理多台哨兵 学习redis如何数据持久化如何管理内存 Redis集群搭建 集群测试 Spring管理集群 2 搭建多台哨兵 2.1 搭建步骤 2.1.1 修改6379哨 ...
- Redis高可用之哨兵模式Sentinel配置与启动(五)
0.Redis目录结构 1)Redis介绍及部署在CentOS7上(一) 2)Redis指令与数据结构(二) 3)Redis客户端连接以及持久化数据(三) 4)Redis高可用之主从复制实践(四) 5 ...
- Redis实战——redis主从备份和哨兵模式实践
借鉴:http://redis.majunwei.com/topics/sentinel.html https://blog.csdn.net/u011784767/article/detai ...
- redis之 主从复制和哨兵
一.Redis主从复制 主从复制:主节点负责写数据,从节点负责读数据,主节点定期把数据同步到从节点保证数据的一致性 1. 主从复制的相关操作 a,配置主从复制方式一.新增redis6380.conf, ...
随机推荐
- 冷饭新炒:理解断路器CircuitBreaker的原理与实现
前提 笔者之前在查找Sentinel相关资料的时候,偶然中找到了Martin Fowler大神的一篇文章<CircuitBreaker>.于是花了点时间仔细阅读,顺便温习一下断路器Circ ...
- STM32入门系列-介绍STM32型号与功用
作为STM32初学者,一般会选择购置一块开发板,因为在开发板上有很多已经集成好的模块,如红外模块.按键模块.LED模块.DAC模块.ADC模块.can模块.485模块.以太网模块.WiFi模块.蜂鸣器 ...
- js-循环遍历
for循环 (最传统的方法) let arr=[a,b,c,d] for (var i = 0; i < arr.length; i++) { console.log(arr[i]); } fo ...
- ES6 小记
1.let & const let:相当于var,不同的是没有变量提升,且只在声明的作用域内有效(新增了块级作用域). Const: 声明一个静态场量,一旦声明,常量的值就不能改变. for. ...
- Go语言如何像foreach一样有序遍历map
目录 问题 解决 给key排序思路 开源实现 问题 Go语言的Map是无序遍历的,遍历一个map代码如下 package main import ( "fmt" ) func ma ...
- .NET 5.0正式发布,功能特性介绍(翻译)
本文由葡萄城技术团队翻译并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 我们很高兴今天.NET5.0正式发布.这是一个重要的版本-其中也包括了C# ...
- 嗖嗖移动大厅 源代码 Java初级小项目
今天给大家一个比较综合的项目:嗖嗖移动业务大厅.项目功能很多,概括的功能也很全面.吃透了这个项目,你的java基础部分已经非常棒了!!! 一 . 项目概述 技能要求 使用面向对象设计的思想 合 ...
- 这么好?中科图新项目经理教你开发LocaSpace功能
LocaSpace是专注于实景三维数据应用的三维数字地球软件,为开发者提供强大.稳定的SDK服务,花费很少的精力即可在自己产品中集成某项功能. 我们将于2018年7月18日至7月20日举办&quo ...
- Spider--补充--Requests--session&cookie
# session 与 cookie # 可能大家对session已经比较熟悉了,也大概了解了session的机制和原理,但是我们在做爬虫时如何会运用到session呢,就是接下来要讲到的会话保持. ...
- python_计算器
import re from functools import reduce # 定义一个只计算两个数的乘法或除法的函数: def multiply_division(exp): if "* ...