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:6379> SET msg "hello world"
OK

127.0.0.1:6380> GET msg
"hello world"

127.0.0.1:6379> INCR counter
(integer) 1
127.0.0.1:6379> INCR counter
(integer) 2

127.0.0.1:6380> GET counter
"2"

127.0.0.1:6379> RPUSH lst 1 3 5 7 9
(integer) 5

127.0.0.1:6380> LRANGE lst 0 -1
1)"1"
2)"3"
3)"5"
4)"7"
5)"9"

服务器下线处理

主服务器或者从服务器下线了,怎么办?

服务器在复制时遭遇下线

在一个由主服务器和从服务器组成的系统中,主服务器或从服务器都有可能会下线,但是不同服务器下线带来的影响并不相同:

从服务器下线:整个系统处理读请求的性能将有所下降,但整个系统仍然可以继续处理写请求和读请求,并不会导致系统停机

从服务器下线图例描述:

从服务器 B 下线,导致客户端C的访问失败,但只要客户端C改为访问其他在线的服务器,就可以解决这个问题。

主服务器下线:因为在整个系统中只有主服务器能处理写请求,那么主服务器下线后整个系统只能处理读请求而无法处理写请求导致系统停机

主服务器下线导致主从服务器的连接中断,并使得整个系统无法再执行写命令。这时从服务器还是可以继续处理读请求的,但是从服务器的数据会因为主服务器下线而没办法再得到更新。

让系统重新上线

为了让系统能够重新正常上线状态(让系统中的服务器既能处理读请求,又能处理写请求),用户需要向系统中的某一个从服务器发送SLAVEOF no one命令,让它自己变成新的主服务器,并向其他从服务器发送SLAVEOF命令,让它们去复制新的从服务器。

现在系统有了新的主服务器,以及一个从服务器,客户端可以继续使用这个系统来处理读请求和写请求了。

因为有一台服务器下线了的缘故,所以重新上线的系统在性能方面可能比不上原有的系统,但这种恢复操作可以避免整个系统停机

虽然上面介绍的方法可以让系统重新上线,但手动来执行这些操作实在太麻烦了,为此,Redis 提供了 Sentinel 程序,用户可以使用Sentinel 来自动检测主从服务器的状态,并在主服务器下线时,自动执行故障转移操作(failover),让系统重新上线。

时间: 2024-08-28 22:08:43

Redis多机功能之复制的相关文章

Redis多机功能介绍

Redis多机功能目的:以单台Redis服务器过渡到多台Redis服务器 Redis单机在生产环境中存在的问题 1.内存容量不足 Redis使用内存来存书数据库中的数据,但是对于一台机器来说,硬件的内存容量是有限的,当我们需要存储的数据量超过机器的内存数量时,一台服务器就没办法满足我们的要求: 比如:要存储128G的数据,但是机器最大只支持64G内存: 2.处理能力不足 和内存数量限制类似.由于服务器硬件的限制(机器配置/网络限制等),一台服务器能够处理的命令请求数量也是有限的,当我们需要处理的

Redis多机功能总结

1.通过Redis的复制功能,用户可以创建指定服务器的任意多个复制品,每个复制品服务器和被复制的原服务器拥有相同的数据: 2.通过将读请求分散给多个从服务器处理,用户可以减少主服务器在处理读请求方面的负担,并提高整个系统处理读请求的能力: 3.在一个既有主服务器又有从服务器的系统中,当从服务器下线时,系统处理读请求的能力将会有所下降,但整个系统仍然可以正常工作:而如果下线的是主服务器,那么系统将无法处理写请求而导致停机: 4.通过将下线主服务器的某个从服务器提升为主服务器,并让其他从服务器转为复

Redis多机功能之Sentinel

Sentinel的目的:监视主从服务器,并在主服务器下线时自动进行故障转移 启动Sentinel 通过执行Redis安装文件中的redis-sentinel程序,可以启动一个Sentinel实例: redis-sentinel sentinel.conf 因为Redis的Sentinel实际上就是一个运行在Sentinel模式下的Redis服务器,所以我们同样可以使用以下命令来启动一个Sentinel实例 redis-server sentinel.conf --sentinel 启动Senti

Redis的各项功能解决了哪些问题?(转)

http://www.cnblogs.com/linianhui/p/what-problem-does-redis-solve.html 先看一下Redis是一个什么东西.官方简介解释到:Redis是一个基于BSD开源的项目,是一个把结构化的数据放在内存中的一个存储系统,你可以把它作为数据库,缓存和消息中间件来使用.同时支持strings,lists,hashes,sets,sorted sets,bitmaps,hyperloglogs和geospatial indexes等数据类型.它还内

【转】Redis的各项功能解决了哪些问题?

先看一下Redis是一个什么东西.官方简介解释到:Redis是一个基于BSD开源的项目,是一个把结构化的数据放在内存中的一个存储系统,你可以把它作为数据库,缓存和消息中间件来使用.同时支持strings,lists,hashes,sets,sorted sets,bitmaps,hyperloglogs和geospatial indexes等数据类型.它还内建了复制,lua脚本,LRU,事务等功能,通过redis sentinel实现高可用,通过redis cluster实现了自动分片.以及事务

redis有哪些功能

基于本机内存的缓存 为了解决调用API依然需要2秒的问题,经过排查,其主要原因在于使用SQL获取热点新闻的过程中消耗了将近2秒的时间,于是乎,我们又想到了一个简单粗暴的解决方案,即把SQL查询的结果直接缓存在当前api服务器的内存中(设置缓存有效时间为1分钟).后续1分钟内的请求直接读缓存,不再花费2秒去执行SQL了.假如这个api每秒接收到的请求时100个,那么一分钟就是6000个,也就是只有前2秒拥挤过来的请求会耗时2秒,后续的58秒中的所有请求都可以做到即使响应,而无需再等2秒的时间. 服

redis宕机如何解决?如果是项目上线的宕机呢?

我们先来了解一下  bridge网络模式 他会创建一个docker0桥,看完这个我们就会知道redis哨兵机制的端口了. 之后继续研究redis宕机的解决办法! 宕机: 服务器停止服务 如果只有一台redis, 肯定会造成数据丢失. 多台reids或者是Redis集群,服务器宕机还有办法. 1.从的redis宕机怎么解决? 配置主从复制的时候才配置从的redis, 从的会从主的redis中读取主的redis的操作日志,来达到主从复制. 1.只要把从的redis重新启动,再和主的进行连接就可以 2

4个点让你彻底明白Redis的各项功能

前言 先看一下Redis是一个什么东西.官方简介解释到: Redis是一个基于BSD开源的项目,是一个把结构化的数据放在内存中的一个存储系统,你可以把它作为数据库,缓存和消息中间件来使用.同时支持strings,lists,hashes,sets,sorted sets,bitmaps,hyperloglogs和geospatial indexes等数据类型.它还内建了复制,lua脚本,LRU,事务等功能,通过redis sentinel实现高可用,通过redis cluster实现了自动分片.

Redis集群功能概述

在单机Redis中介绍过Redis的复制特性以及Redis Sentinel和twemproxy,其中: 复制:可以创建指定服务器的复制品,这些复制品可以用户扩展系统处理读请求的能力: Redis Sentinel:可以在复制特性的基础上,通过监视主从服务器并在主服务器故障时执行自动故障转移来保证系统的可用性: twemproxy:使用分片策略来讲数据库划分到多个不同的服务器,以此来扩展系统存储的数据量,并通过将命令请求分散给不同的服务器来处理,以此来扩展系统处理命令请求的能力: 但是以上的特性