Redis系列四之复制
一、复制基本配置与演示
为了避免单点故障,Redis提供了复制功能,可以实现自动同步的过程。
1、配置
同步后的数据分为两类:一类是主数据库(master),一类是从数据库(slave)。主数据库可以进行读写操作,当发生写操作时自动将数据同步给从数据库。而从数据一般只读,并接受主数据库同步过来的数据。
在Redis使用复制功能,只需要在从数据库的配置文件中加入"salveof 主数据库IP 主数据库端口"即可,主数据库无需进行任何配置。
2、Redis复制演示
下面我们在同一台服务器上启动两个Redis实例,监听不同的端口,其中一个作为主数据库,另一个作为从数据库。
首先,我们要复制一个Redis服务的配置文件,并取名为redis6380.conf。
我们修改redis6380.conf配置文件中的端口号为6380,并且配置改Redis实例为主数据库的从数据库。
配置从数据库
接着,我做了两个启动Redis的bat批处理文件,用于启动两个Redis数据库:
内容分别是:
redis-server redis.windows.conf //启动主数据库
redis-server redis6380.conf //启动从数据库
现在我们启动主从数据库的客户端:
主数据库的客户端就在Redis的安装目录下,双击redis-cli.exe即可。
从数据库的启动,我们打开cmd,进入Redis的目录,输入
这样,我们就有了两个Redis数据库服务端和客户端,下面就来演示复制的功能:
首先,在主数据库中输入
然后,在从数据库的客户端,我们进行查询操作
可以看到,在从数据库中获取的name属性的值。
注:除了通过配置文件或命令行设置slaveof参数,还可以在运行时使用slaveof命令修改:
如果该数据库已经是其他主数据库的从数据库了,slaveof命令会停止和原来的数据库的同步转而和新的数据库进行同步。
二、复制原理
当一个数据库启动后,会向主数据库发送SYNC命令,主数据库收到SYNC命令后开始在后台保存快照,并将保存期间收到的命令缓存起来。当快照完成后,Redis会将快照文件和所有的缓存的命令发送给从数据库,从数据库接收到后,会载入快照文件并执行收到的缓存的命令。当主从数据库断开重连后会重新执行上述操作。
三、从数据库持久化
为了提高性能,可以通过复制功能简历若干个从数据库,并在从数据库中启用持久化,同时在主数据中禁用持久化。当从数据库崩溃时重启后主数据会自动将数据同步过来,所以无需担心数据丢失。而当主数据库崩溃时,需要在从数据库中使用slaveof no one 命令将从数据库提升为主数据继续服务,并将原来的主数据库启动后使用slaveof命令将其设置为新的主数据库的从数据库,即可将新的数据同步过来。
四、参考资料
1、Redis入门指南(李子骅)
Redis系列四之复制的更多相关文章
- Redis系列(四):Redis的复制机制(主从复制)
本篇博客是Redis系列的第4篇,主要讲解下Redis的主从复制机制. 本系列的前3篇可以点击以下链接查看: Redis系列(一):Redis简介及环境安装 Redis系列(二):Redis的5种数据 ...
- Redis系列四(keepalived+lvs搭建负载均衡)
1.安装Keepalived(主备服务器都要安装) 10.8.80.218 主服务器 10.8.80.217 备服务器 10.8.80.200 虚拟IP $ wget http://www.ke ...
- Redis系列四:redis支持的数据类型
一.字符串<String> 1. 字符串类型:实际上可以是字符串(包括XML JSON),还有数字(整形 浮点数),二进制(图片 音频 视频),最大不能超过512MB 2. 设值命令: s ...
- Redis系列四 Redis常见配置
redis.conf常见配置 参数说明redis.conf 配置项说明如下:1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no2. ...
- Redis系列(四)--持久化
持久化就是将数据的更新异步的保存到磁盘中 持久化方式: 1.快照:某个时间点数据的备份 MySQL dump.Redis RDB 2.写日志:MySQL BinLog.HBASE Hlog.Redis ...
- Redis系列四 - 分布式锁的实现方式
前言 分布式锁一般有3中实现方式: 数据库乐观锁: 基于Redis的分布式锁: 基于ZooKeeper的分布式锁. 以下将详细介绍如何正确地实现Redis分布式锁. 可靠性 首先,为了确保分布式锁的可 ...
- Redis系列(四)-低成本高可用方案设计
关于Redis高可用方案,看到较多的是keepalived.zookeeper方案. keepalived是主备模式,意味着总有一台浪费着.zookeeper工作量成本偏高. 本文主要介绍下使用官方s ...
- Redis系列(五):Redis的过期键删除策略
本篇博客是Redis系列的第5篇,主要讲解下Redis的过期键删除策略. 本系列的前4篇可以点击以下链接查看: Redis系列(一):Redis简介及环境安装 Redis系列(二):Redis的5种数 ...
- Redis系列(六):设置/移除键的过期时间
本篇博客是Redis系列的第6篇,主要讲解以下内容: 数据库数量 切换目标数据库 设置键的过期时间 移除键的过期时间 本系列的前5篇可以点击以下链接查看: Redis系列(一):Redis简介及环境安 ...
随机推荐
- 机械革命 USB装系统各种坑
买了个号称超强性价比的游戏本- 机械革命, i7+ssd+hd+4G RAM+ GTX850M, 很直接, 直接出厂就一个DOS系统,回来要自己装机. 好吧, 先下了个大白菜软件,用来刻录ISO系统到 ...
- MVVM架构~使用boxy和knockoutjs实现编辑功能
返回目录 这个功能我认为非常有用,尤其在后台管理系统中,它对用户来说,使用体验这块非常不错,下面是它的截图
- Js~对数组进行分组户数
在sql里有group by,主要对数据结果集进行分组统计,而对于JS来说,有时我们也需要这种功能,例如一个数据{"dog","cat","dog&q ...
- js笔记——理解js中的call及apply
call及apply在js里经常碰得到,但一直感觉很陌生,不能熟练使用.怎样才能熟练应用呢? 为什么存在call和apply? 在javascript OOP中,我们经常会这样定义: function ...
- Atitit 语音识别的技术原理
Atitit 语音识别的技术原理 1.1. 语音识别技术,也被称为自动语音识别Automatic Speech Recognition,(ASR),2 1.2. 模型目前,主流的大词汇量语音识别系统多 ...
- Atitit 电子商务订单号码算法(java c# php js 微信
Atitit 电子商务订单号码算法(java c# php js 微信 1.1. Js版本的居然钱三爷里面没有..只好自己实现了. 1.2. 订单号标准化...长度16位 1.3. 订单号的结构 前 ...
- Atitit.异步的实现模式attilax大总结
Atitit.异步的实现模式attilax大总结 1.1. 函数回调(包括的future模式)1 1.2. 事件机制( 包括定时器 listeners 1 1.3. 中断机制1 1.4. 订阅机制 发 ...
- salesforce 零基础开发入门学习(十四)salesforce中工厂模式的运用
提到工厂模式,想必大家都很熟悉,工厂模式作为一种设计模式,同样在salesforce中适用. 举一个例子,笔作为基类,可以有钢笔,铅笔,圆珠笔等等.有一个笔的工厂,当你向它要钢笔,它就会生产一支钢笔; ...
- python导入模块和包的使用
做项目的时候经常会要求做到模块化管理,即同样功能的代码放到同一个文件夹下,以便于方便管理,相信很多人对模块的引用都模糊不清,今天鄙人在这里就总结下. 一.模块导入的使用 在同一个文件夹下有两个文件分别 ...
- sql server 链接到本地实例出错
我在使用VS2010测试package的时候,突然发现sql server 链接到本地实例出错,出错信息如下: “ A network-related or instance-specific err ...