redis学习笔记第三部分 --redis持久化介绍,事务,主从复制

三,redis的持久化
RDB(Redis DataBase)
AOF(Append Only File)

RDB:
在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里.

Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到
一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。
整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能
如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方
式要比AOF方式更加的高效。RDB的缺点是最后一次持久化后的数据可能丢失。

AOF:
以日志的形式记录每个写操作,将redis执行过的所有写指令记录下来(读操作不记录)
只许追加文件但不可改写文件,redis启动之初会读取该文件重新构建数据,换言之,
redis重启的话就根据日志文件的内容将写指令从前到后执行一次,来完成数据的恢复.

四,redis的事务

五,redis的消息订阅发布(了解)
是什么:进程间的一种消息通信模式,发送者(pub)发送消息,订阅者(sub)订阅消息.

六,redis的主从复制:
是什么:
行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到从机的master/slave机制,
master以写为主,slave以读为主;

能干嘛:
做集群,缓解读取数压力,做失效转移,某一台机器宕机,不影响客户端使用;

怎么玩:
1.配从(库)不配主(库),主机先配置自己的IP和端口;
2.从库配置: slaveof主库ip 主库端口
每次与master断开后,都需要重新连接,除非你配置进redis.conf文件 
slaveof 127.0.0.1 6379 --配置后变为从机,绑定的主机ip和端口地址
info replication; --查看本机器的角色

3.修改配置文件细节操作:
拷贝多个redis.conf文件
开启daemonize yes
pid 文件名字
指定端口
log文件名字
dump.rdb名字

4.常用3招:
一主二仆
--一个主机2个从机,主机将从机的数据复制到从机

薪火相传
--上一个slave可以使下一个slave的master,slave同样可以接收其他slaves的连接同步请求,
那么该slave作为链条中的下一个的master,可以减轻master的写压力;
中途变更转向,会清楚之前的数据,重新建立拷贝最新的数据
slaveof新主库ip 新主库端口;

反客为主
--slaveof no one ,使当前数据库停止与其他数据库的同步,转成主数据库;

5.复制的原理
slave启动成功第一次连接到master后会发送一个sync命令,
master接到命令启动后台的存盘进程,同时收集所有接收到的修改数据的命令,
在后台进程执行完毕后,master将传送整个数据文件到slave,以完成一次全量同步;
全量复制:
slave服务在接收到数据库文件后,将其存盘并加载到内存中
增量复制:
master继续将新的所有收集到修改命令一次传给slave,完成同步
但是只要重新连接master,就会做一次全量同步;自动执行;

6.哨兵模式(反客为主的自动模式)
是什么:
反客为主的自动版,能够在后台监控主机是否故障,如果故障了根据投票数自动将从库转为主库;

怎么玩:
配置哨兵;
新建一个哨兵配置文件 sentinel.conf 文件
port 26301
##哨兵监控的主机名称 地址 端口 选举某个从机作为主机的哨兵的个数,
sentinel monitor master1 192.168.0.12 6301 2

原有的master挂了,在从机中选举了一个作为主机, 旧主机恢复后,作为从机;

7.复制的缺点:
由于所有的写操作都是现在master上操作,然后同步到slave上,所以master同步到slave有一定延迟,当系统
很繁忙的时候,延迟问题会更加严重,slave机器数量的增加也会使这个问题更加严重;

以上就是redis学习笔记的全部内容

redis学习笔记(3)的更多相关文章

  1. redis 学习笔记(6)-cluster集群搭建

    上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞shardi ...

  2. Redis学习笔记~目录

    回到占占推荐博客索引 百度百科 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合). ...

  3. Redis学习笔记4-Redis配置详解

    在Redis中直接启动redis-server服务时, 采用的是默认的配置文件.采用redis-server   xxx.conf 这样的方式可以按照指定的配置文件来运行Redis服务.按照本Redi ...

  4. Redis学习笔记7--Redis管道(pipeline)

    redis是一个cs模式的tcp server,使用和http类似的请求响应协议.一个client可以通过一个socket连接发起多个请求命令.每个请求命令发出后client通常会阻塞并等待redis ...

  5. Redis学习笔记一:数据结构与对象

    1. String(SDS) Redis使用自定义的一种字符串结构SDS来作为字符串的表示. 127.0.0.1:6379> set name liushijie OK 在如上操作中,name( ...

  6. Redis学习笔记之ABC

    Redis学习笔记之ABC Redis命令速查 官方帮助文档 中文版本1 中文版本2(反应速度比较慢) 基本操作 字符串操作 set key value get key 哈希 HMSET user:1 ...

  7. (转)redis 学习笔记(1)-编译、启动、停止

    redis 学习笔记(1)-编译.启动.停止   一.下载.编译 redis是以源码方式发行的,先下载源码,然后在linux下编译 1.1 http://www.redis.io/download 先 ...

  8. Redis学习笔记(二)-key相关命令【转载】

    转自 Redis学习笔记(二)-key相关命令 - 点解 - 博客园http://www.cnblogs.com/leny/p/5638764.html Redis支持的各种数据类型包括string, ...

  9. Redis学习笔记(三)Redis支持的5种数据类型的总结

    继续Redis学习笔记(二)来说说剩余的三种数据类型. 三.列表类型(List) 1.介绍 列表类型可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的一段片段.列表类型内部是 ...

  10. Redis学习笔记(二)Redis支持的5种数据类型的总结之String和Hash

    引言 在Redis学习笔记(一)中我们已经会安装并且简单使用Redis了,接下来我们一起来学习下Redis支持的5大数据类型. 简介 Redis是REmote DIctionary Server(远程 ...

随机推荐

  1. C 语言实例 - 计算自然数的和

    C 语言实例 - 计算自然数的和 自然数是指表示物体个数的数,即由0开始,,,,,,……一个接一个,组成一个无穷的集体,即指非负整数. 实例 - 使用 for #include <stdio.h ...

  2. React中的代码分割

    代码分割想要解决的问题是:经打包工具

  3. python基本数据类型2——操作

    字符串 name = "alex" # 移除两边的空格 print(name.strip()) #strip不修改值 # 是否以"al"开头 print(nam ...

  4. php根据出生日期获取年龄

    /** * @param $birthday 出生年月日(1992-1-3) * @return string 年龄 */ function countage($birthday){ $year=da ...

  5. js 阻止元素发生默认的行为ie兼容

    //亲测ie9可以兼容 function Go(event) { var e = event; if (e && e.preventDefault) { e.preventDefaul ...

  6. Django之ORM跨表操作

    Django之ORM表查询及添加记录 一.创建表 - 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系(many-to-man ...

  7. Python随笔---return与print,全局变量与局部变量

    Return是指返回一个数值,一般在函数中应用较多 Print则是指把结果打印出来,显示在屏幕上 def sum(a,b): total=a+b print('函数内:',total) return ...

  8. High waits on control file sequential read

    High waits on control file sequential read (文档 ID 2277867.1) In case we run into an issue where cont ...

  9. 无线网路由器的dBm值

    首先,我们需要知道的是无线信号 dbm都是负数,最大是0:dbm值只在一种情况下为0,那就是在理想状态下经过实验测量的结果,一般我们认为 dbm为0是其最大值,意味着接收方把发射方发射的所有无线信号都 ...

  10. 【踩坑】List 的陷阱

    今天测试iReview项目数据的反馈,发现有些语句总无法执行. 经过调试排查后,发现List<自定义类>返回了空集"[]",却无法进入if语句里面,即 if (List ...