redis学习笔记(3)
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)的更多相关文章
- redis 学习笔记(6)-cluster集群搭建
上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞shardi ...
- Redis学习笔记~目录
回到占占推荐博客索引 百度百科 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合). ...
- Redis学习笔记4-Redis配置详解
在Redis中直接启动redis-server服务时, 采用的是默认的配置文件.采用redis-server xxx.conf 这样的方式可以按照指定的配置文件来运行Redis服务.按照本Redi ...
- Redis学习笔记7--Redis管道(pipeline)
redis是一个cs模式的tcp server,使用和http类似的请求响应协议.一个client可以通过一个socket连接发起多个请求命令.每个请求命令发出后client通常会阻塞并等待redis ...
- Redis学习笔记一:数据结构与对象
1. String(SDS) Redis使用自定义的一种字符串结构SDS来作为字符串的表示. 127.0.0.1:6379> set name liushijie OK 在如上操作中,name( ...
- Redis学习笔记之ABC
Redis学习笔记之ABC Redis命令速查 官方帮助文档 中文版本1 中文版本2(反应速度比较慢) 基本操作 字符串操作 set key value get key 哈希 HMSET user:1 ...
- (转)redis 学习笔记(1)-编译、启动、停止
redis 学习笔记(1)-编译.启动.停止 一.下载.编译 redis是以源码方式发行的,先下载源码,然后在linux下编译 1.1 http://www.redis.io/download 先 ...
- Redis学习笔记(二)-key相关命令【转载】
转自 Redis学习笔记(二)-key相关命令 - 点解 - 博客园http://www.cnblogs.com/leny/p/5638764.html Redis支持的各种数据类型包括string, ...
- Redis学习笔记(三)Redis支持的5种数据类型的总结
继续Redis学习笔记(二)来说说剩余的三种数据类型. 三.列表类型(List) 1.介绍 列表类型可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的一段片段.列表类型内部是 ...
- Redis学习笔记(二)Redis支持的5种数据类型的总结之String和Hash
引言 在Redis学习笔记(一)中我们已经会安装并且简单使用Redis了,接下来我们一起来学习下Redis支持的5大数据类型. 简介 Redis是REmote DIctionary Server(远程 ...
随机推荐
- MySQL注释符号
今天在执行mysql语句时很奇怪为什么没有执行,查询后发现“-- ”是mysql的注释符号,不会执行的 mysql注释符有三种: 1.#... 2."-- ",注意--后面有一个 ...
- STP-13-MST和其它STP版本的互操作性(没写完)
为了理解MST和其他STP版本的互操作性,首先要来看看MST与没有每VLAN概念的纯IEEE802.1D STP或802.1w RSTP非MST交换机(本书称其为非MST交换机)之间互操作的方式.这些 ...
- c# Array或List有个很实用的ForEach方法,可以直接传入一个方法对集合中元素操作
using System; using System.Collections.Generic; namespace demo { class Program { static void Main(st ...
- (转)nginx应用总结(1)--基础认识和应用参数优化配置
在linux系统下使用nginx作为web应用服务,用来提升网站访问速度的经验已五年多了,今天在此对nginx的使用做一简单总结. 一.nginx服务简介Nginx是一个高性能的HTTP和反向代理服务 ...
- 机器学习框架ML.NET学习笔记【8】目标检测(采用YOLO2模型)
一.概述 本篇文章介绍通过YOLO模型进行目标识别的应用,原始代码来源于:https://github.com/dotnet/machinelearning-samples 实现的功能是输入一张图片, ...
- jeesite框架搭建中mysql数据库导入问题
在进行mysql8.0的安装配置时,可以说是道路坎坷,之前介绍了如何安装配置mysql8.0,虽然mysql在正常情况下是很容易安装的,但是如果遇到特殊情况的时候那就需要特殊的处理. 这次我遇到的问题 ...
- springboot集成shiro实现验证码校验
github:https://github.com/peterowang/shiro/ 这里实现验证码校验的思路是自己添加一个Filter继承FormAuthenticationFilter,Form ...
- 零基础逆向工程12_C语言06_switch语句反汇编
12_C语言06_switch语句反汇编 switch语句反汇编 测试环境:VC++6.0 分支少于4的时候没有意义,编译器会生成类似if...else之类的反汇编,不超过三个分支,不会生成索引表. ...
- Linux 网卡驱动的安装
一.网卡驱动安装的一般思路 1.首先从硬 件安装,检查网卡本身故障 2.检查网卡芯片型号(注意不是硬件品牌) 常见的网卡芯片有Intel RC82545EM/Realtek 8139D/ Broadc ...
- Python3+Selenium3+webdriver学习笔记6(多窗口切换处理)
#!/usr/bin/env python# -*- coding:utf-8 -*- from selenium import webdriverfrom selenium.webdriver.co ...