Redis多机功能之复制
复制的目的:创建具有相同数据库的拷贝服务器;扩展系统处理读请求的能力;
复制的定义
Redis的复制(replication)功能允许用户根据一个Redis服务器来创建任意多个该服务器的复制品,其中被复制的服务器为主服务器(master),而通过复制创建出来的服务器则称为从服务器(slave);
主从服务器两者拥有相同的数据库数据:只要主从服务器之间的网络连接正常,主服务器就会一直将发生在自己身上的数据更新同步给从服务器,从而一直保证主从服务器的数据相同;
一个主服务器可以拥有1到N个从服务器;
使用从服务器来处理读命令请求,通过复制来扩展系统处理读请求的能力
Redis允许从服务器执行客户端发送的命令请求,比如:GET、LRANGE等;
因为主从服务器拥有相同的数据库数据,所以从服务器在执行客户端发送的读命令时,获得的结果与主服务器执行相同的读命令所获得的结果是一样的;
所以用户可以将原本由主服务器负责处理的一部分(甚至全部)读命令请求转交给从服务器处理,从而降低主服务器在处理读命令请求方面的负载,并扩展整个系统处理读命令请求的能力;
通过添加从服务器可以线性地扩展整个系统处理读命令请求的能力
从服务器的创建与使用
创建从服务器,Redis提供了两种方法为某个主服务器创建从服务器
1、使用SLAVEOF master-ip master-port命令
比如:向一个服务器发送slave hadoop000 6379,可以让接收到该命令的服务器变为hadoop000:6379的从服务器;
在将一个服务器设置成从服务器后,可以通过向它发送SLAVEOF no one命令来让它变回一个主服务器(数据库已有的数据会被保留);
2、配置文件中配置:slaveof master-ip master-port 选项来让服务器成为指定服务器的从服务器;
例如:如果客户端对服务器127.0.0.1:6380发送命令SLAVEOF 127.0.0.1 6379,那么127.0.0.1:6380将成为127.0.0.1:6379的从服务器;
主从服务器操作示例:
- 127.0.0.1:> SET msg "hello world"
- OK
- 127.0.0.1:> GET msg
- "hello world"
- 127.0.0.1:> INCR counter
- (integer)
- 127.0.0.1:> INCR counter
- (integer)
- 127.0.0.1:> GET counter
- ""
- 127.0.0.1:> RPUSH lst
- (integer)
- 127.0.0.1:> LRANGE lst -
- )""
- )""
- )""
- )""
- )""
服务器下线处理
主服务器或者从服务器下线了,怎么办?
服务器在复制时遭遇下线
在一个由主服务器和从服务器组成的系统中,主服务器或从服务器都有可能会下线,但是不同服务器下线带来的影响并不相同:
从服务器下线:整个系统处理读请求的性能将有所下降,但整个系统仍然可以继续处理写请求和读请求,并不会导致系统停机;
从服务器下线图例描述:
从服务器 B 下线,导致客户端C的访问失败,但只要客户端C改为访问其他在线的服务器,就可以解决这个问题。
主服务器下线:因为在整个系统中只有主服务器能处理写请求,那么主服务器下线后整个系统只能处理读请求而无法处理写请求,导致系统停机;
主服务器下线导致主从服务器的连接中断,并使得整个系统无法再执行写命令。这时从服务器还是可以继续处理读请求的,但是从服务器的数据会因为主服务器下线而没办法再得到更新。
让系统重新上线
为了让系统能够重新正常上线状态(让系统中的服务器既能处理读请求,又能处理写请求),用户需要向系统中的某一个从服务器发送SLAVEOF no one命令,让它自己变成新的主服务器,并向其他从服务器发送SLAVEOF命令,让它们去复制新的从服务器。
现在系统有了新的主服务器,以及一个从服务器,客户端可以继续使用这个系统来处理读请求和写请求了。
因为有一台服务器下线了的缘故,所以重新上线的系统在性能方面可能比不上原有的系统,但这种恢复操作可以避免整个系统停机。
虽然上面介绍的方法可以让系统重新上线,但手动来执行这些操作实在太麻烦了,为此,Redis 提供了 Sentinel 程序,用户可以使用Sentinel 来自动检测主从服务器的状态,并在主服务器下线时,自动执行故障转移操作(failover),让系统重新上线。
Redis多机功能之复制的更多相关文章
- Redis多机功能介绍
Redis多机功能目的:以单台Redis服务器过渡到多台Redis服务器 Redis单机在生产环境中存在的问题 1.内存容量不足 Redis使用内存来存书数据库中的数据,但是对于一台机器来说,硬件的内 ...
- Redis多机功能总结
1.通过Redis的复制功能,用户可以创建指定服务器的任意多个复制品,每个复制品服务器和被复制的原服务器拥有相同的数据: 2.通过将读请求分散给多个从服务器处理,用户可以减少主服务器在处理读请求方面的 ...
- Redis多机功能之Sentinel
Sentinel的目的:监视主从服务器,并在主服务器下线时自动进行故障转移 启动Sentinel 通过执行Redis安装文件中的redis-sentinel程序,可以启动一个Sentinel实例: r ...
- Redis的各项功能解决了哪些问题?
先看一下Redis是一个什么东西.官方简介解释到:Redis是一个基于BSD开源的项目,是一个把结构化的数据放在内存中的一个存储系统,你可以把它作为数据库,缓存和消息中间件来使用.同时支持string ...
- Redis宕机的问题
在主从模式下宕机要分为区分来看: slave从redis宕机 在Redis中从库重新启动后会自动加入到主从架构中,自动完成同步数据: 如果从数据库实现了持久化,只要重新假如到主从架构中会实现增 ...
- redis宕机如何解决?如果是项目上线的宕机呢?
我们先来了解一下 bridge网络模式 他会创建一个docker0桥,看完这个我们就会知道redis哨兵机制的端口了. 之后继续研究redis宕机的解决办法! 宕机: 服务器停止服务 如果只有一台r ...
- 4个点让你彻底明白Redis的各项功能
前言 先看一下Redis是一个什么东西.官方简介解释到: Redis是一个基于BSD开源的项目,是一个把结构化的数据放在内存中的一个存储系统,你可以把它作为数据库,缓存和消息中间件来使用.同时支持st ...
- 【转】Redis的各项功能解决了哪些问题?
作者:Blackheart 出处:http://linianhui.cnblogs.com 先看一下Redis是一个什么东西.官方简介解释到:Redis是一个基于BSD开源的项目,是一个把结构化的数据 ...
- Redis的各项功能解决了哪些问题?(转)
http://www.cnblogs.com/linianhui/p/what-problem-does-redis-solve.html 先看一下Redis是一个什么东西.官方简介解释到:Redis ...
随机推荐
- 正在调用的 ServicedComponent 配置不正确(请使用 regsvcs 重新注册)
问题: 正在调用的 ServicedComponent 配置不正确(请使用 regsvcs 重新注册) 方法1: 我用的是64位操作系统.IIS中,启用32位应用程序设置为false.这样就可以了 ...
- Servlet Filter 2
10.Filter常见应用 )统一全站字符编码的过滤器 通过配置参数encoding指明使用何种字符编码,以处理Html Form请求参数的中文问题 案例:编写jsp 输入用户名,在Servlet中获 ...
- ASIHttpRequest addRequestHeader的处理
我现在用到了ASIHttpRequest来读取数据,这时候我发现里面的头在很多时候都是一样的.如用户的令牌,设备类型,ios版本,软件版本等 [self.request addRequestHeade ...
- UIview定义背景图片
UIImage *image = [UIImage imageNamed:@"bgimagename"]; UIView *view = [[UIView alloc]ini ...
- 不包含适合于入口点的静态"Main"方法
学习新建项目.此问题做为笔记. 错误 1 程序“admin.exe”不包含适合于入口点的静态“Main”方法 原因:原来创建项目的时候,用的是“空项目”,我以为这样就会生成类库,实际上,一开始准备运行 ...
- This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms
异常消息:This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms ...
- 判断是否含有中文,包含返回true,不包含返回false
/** * 功能:判断是否含有中文,包含返回true,不包含返回false */ function isChina(s) { var patrn = /[\u4E00-\u9FA5]|[\uFE30- ...
- PL/SQL中查看列注释、列属性
- .net关于httpModules的应用示例
这三个对象我们在开发Asp.net程序时经常会用到,似乎很熟悉,但有时 候又不太确定.本文通过一个简单的例子来直观的比较一下这三个对象的使用. HttpModule:Http模块,可以在页面处理前后. ...
- UVa 297 Quadtrees(树的递归)
Quadtrees 四分树就是一颗一个结点只有4个儿子或者没有儿子的树 [题目链接]UVa 297 Quadtrees [题目类型]树的递归 &题意: 一个图片,像素是32*32,给你两个先序 ...