1. 搭建多台哨兵
  2. 完成spring管理多台哨兵
  3. 学习redis如何数据持久化如何管理内存
  4. Redis集群搭建
  5. 集群测试
  6. Spring管理集群

搭建多台哨兵

2.1 搭建步骤

2.1.1 修改6379哨兵配置

说明:该信息唯一标识哨兵,这个信息是哨兵启动后,由哨兵自动写入的

2.配置哨兵数

说明:如果由哨兵自动的选择主从结构,则下边的master会根据哨兵的选举自动的变化. 2表示由多个哨兵 最终有2台决定推选结果. 一般的哨兵为奇数个.

2.1.2 构建6380哨兵

说明:配置多台哨兵时有2种方式.

  1. 直接复制已经配置好的哨兵配置文件,进行修改

a) 必须修改myid否则哨兵不起作用

b) 修改哨兵端口 26380

2.1.3 修改6381哨兵

说明:采用全新的配置文件进行哨兵的配置

  1. 关闭保护模式

说明:只有关闭保护模式,哨兵与哨兵之间才能相互通信

  1. 修改端口
  1. 配置主机 端口 推选数
  1. 修改推选时间

说明:修改推选时间为了测试方便.否则等待时间较长.一般采用默认的时间,无需修改.

说明:10秒没有检测到主机,则进行推选.

2.2 哨兵测试

2.2.1 多个哨兵启动

说明:

当多个哨兵启动后,哨兵与哨兵之间能够形成通信.并且相互通知.

当主机宕机后,哨兵进入推选状态.图中表述推选的结果.

2.2.2 哨兵搭建注意事项

  1. 测试单台哨兵是否有效.

a) 检测防火墙是否关闭

b) 远程保护是否关闭

  1. 修改端口
  2. 修改Myid
  3. 在配置之前 首先将全部哨兵关闭.如果配置完成之后重启
  4. 采用复制全新的哨兵文件单独配(注意主机是谁)

2.3 哨兵Jedis入门案例

2.3.1 通过哨兵如何操作redis

知识回顾:

  1. 采用redis分片技术时,每个分片其实就是真实的redis节点.操作分片其实能直接进行redis的set和get操作
  2. 分片的缺点:不能实现高可用

哨兵技术:

  1. 可以动态的实现主机的自动切换.
  2. 哨兵只负责主节点的检测工作.不能写哨兵和读哨兵.响应的操作都应该在redis节点中进行.
  3. 当采用哨兵机制时,可以通过哨兵自动发现谁是master主机.当用户通过哨兵进行set操作时,内部哨兵将set操作交给redis节点中的master进行执行.哨兵起到一个中转作用.

2.3.2 哨兵jedis测试

@Test

public void test03(){

//2.定义哨兵set集合

Set<String> sets = new HashSet<String>();

//3.向集合中加入哨兵节点

sets.add(new HostAndPort("192.168.126.142",26379).toString());

sets.add(new HostAndPort("192.168.126.142",26380).toString());

sets.add(new HostAndPort("192.168.126.142",26381).toString());

//1.定义哨兵连接池   参数编辑哨兵名称

JedisSentinelPool sentinelPool =

new JedisSentinelPool("mymaster", sets);

//4.插入数据

Jedis jedis = sentinelPool.getResource();

jedis.set("1709", "哨兵测试");

//5输出结果

System.out.println(jedis.get("1709"));

}

2.4 Sping整合哨兵

2.4.1 编辑哨兵配置文件

说明:将哨兵的配置文件放入项目中spring文件夹下.

注意将由于分片的配置文件删除或者修改名称.

<!--定义连接池  -->

<bean id="jedisSentinelPool" class="redis.clients.jedis.JedisSentinelPool">

<constructor-arg index="0" value="${redis.sentinel.masterName}"/>

<constructor-arg index="1">

<set>

<value>${redis.sentinel.host1}</value>

<value>${redis.sentinel.host2}</value>

<value>${redis.sentinel.host3}</value>

</set>

</constructor-arg>

</bean>

2.4.2 编辑properties文件

2.4.3 将properties交给spring管理

<bean id="propertyPlaceholder"

class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

<property name="locations">

<list>

<value>classpath:/property/jdbc.properties</value>

<!--添加redis的配置文件  -->

<value>classpath:/property/redis.properties</value>

</list>

</property>

</bean>

Redis中持久化技术

3.1 Redis默认持久化方式RDB

3.1.1 RDB说明:

说明:RBD模式是redis中默认采用的模式,该模式会在一定的时间范围内进行redis实例的自动数据备份.(内存中的数据定时持久化到磁盘中),

1.当redis节点因为断电或者关机.这是内存释放,数据丢失.

2.当redis再次启动时首先会根据配置文件查找当前节点的rdb文件,自动的读取rdb文件中的内容.自动的实现数据恢复.

3.1.2 RDB的写盘操作

说明: rdb文件中一般默认会15分钟写盘一次,该写盘操作是自动的,redis当进行写盘操作时,会自动的创建一个线程.该线程不与主线程冲突.(读和写都是通过主线程完成).

当该线程执行时用户没有感觉.如果想主动的进行写盘操作则在客户端执行save命令

命令:

  1. Save

a) 弊端:当主动执行save命令时,这时会对主线程造成阻塞.该命令一般使用

  1. Bgsave

a) 通过bgsave持久化数据时,产生的线程不会与主线程冲突,采用后台技术完成.不会产出阻塞,.但是不能保证马上执行.

Background saving started

3.1.3 RDB文件的持久化策略

  1. pid存储路径:
  1. 默认的持久化策略

A.save 900 1

B.save 300 10

C.save 60 10000

说明:

  1. 当redis节点进行set操作时,900秒内执行一个set操作时,才自动备份.
  2. 当redis节点进行set操作时,300秒内执行10次时,进行自动数据备份.
  3. 当redis节点进行set操作时,60秒内,执行了10000次操作时进行数据备份.

3.1.4 RDB的优点

说明:redis中的默认的备份采用RDB的形式,该形式有定时备份的特定.其消耗的资源较少.

缺点:

如果对数据的完整性有特别的要求,则采用rdb方式可能会造成数据的丢失.

3.2 Redis持久化AOF

3.2.1 AOF说明

说明:

如果对于数据的完整性有特殊的要求,才使用AOF的方式进行.

该方式,在一定程度上不如rdb效率高.

3.2.2 AOF的持久化策略

说明:redis的默认持久化策略采用RDB形式,如果想使用AOF形式,需要进行额外的配置

说明:如果将appendonly 改为yes.则redis的持久化策略发生改变.

则采用AOF的形式进行数据备份.

说明:

Everysec  每秒数据备份一次 效率相对于RDB接近效率

Always     只要执行set操作,则redis就会备份,该操作的效率很低

No         将备份的策略交个操作系统完成(30分钟备份一次) 一般很少使用

appendfsync everysec 默认采用每秒备份一次.

 

总结:

当redis数据备份没有做特殊的处理appendOnly为no时,采用rdb.当改为yes时,则启动redis节点时,会自动的加载AOF持久化文件.如果采用AOF数据备份,一般采用每秒数据备份一次,.可以有效的保存当先的节点信息.

 

3.3 Redis的内存策略

3.3.1 Redis的内存策略

说明:redis是基于内存的,但是内存资源相对比较珍贵.如果redis中的数据很多,内存占满,这时如果set一条新的数据,则没有地方存储该数据.

策略:

Redis在内存中有自由的优化策略,保证数据不会出现存不下的现象.

说明:

如果想改变内存的大小,只需将注释去掉,设定最大内存.

maxmemory 10M   表示内存10兆

3.3.2 内存优化的方式

说明:在redis内存中有lru算法,能够查找最近不使用数据

  1. volatile-lru

a) 说明:在已经设定了超时时间的数据中,查找最近不用的数据删除.

  1. allkeys-lru

a) 说明:在所有的key中,查找最近不常使用的数据进行删除

  1. volatile-random

a) 在设定了超时时间的key中 随机删除数据

  1. allkeys-random

a) 在所有的key中,随机的删除数据

  1. volatile-ttl

a) 在所有设定了超时时间的key中,找将要超时的数据进行删除.

  1. 算法中将按照超时时间进行排序,将马上要超时的数据提前删除
  2. noeviction

说明:redis默认使用的就是最后一种.redis将内存的维护交给操作系统.当redis的内存需要更新时.由操作系统从数据库中随意选取5个数据进行删除.

Redis集群

建目录

[root@localhost redis-3.2.8]# mkdir 7000 7001 7002 7003 7004 7005 7006 7007 7008

复制配置文件

[root@localhost redis-3.2.8]# cp redis.conf 7000/redis-7000.conf

3.修改配置文件参数(redis-7000.conf)

1.注销绑定的端口号

2.关闭保护模式

  1. 修改端口号
  1. 后台运行开启
  1. 通过绝对路径指明文件存放的位置(指定pid文件的路径)
  1. 如果不修改dump文件那么每次的日志文件都是公用的,修改dump日志文件路径
  1. 启用二进制日志
  1. 启用集群

9.将端口号改为7000,打开集群超时时间

  1. 将主从挂载删除获取是注释,如果挂载了主从关系 需要删除

执行以下命令可以先将文件中的全部7000修改为7001

:%s/7000/7001/g

11.将配置文件分别拷贝到7001-7008中,需要修改端口号即可

12.分别将7002-7008的配置文件进行修改

分区

复制配置文件(将redis-7000.conf到其他文件夹)

[root@localhost redis-3.2.8]# cd 7000

[root@localhost 7000]# cp redis-7000.conf ../7001/redis-7001.conf

[root@localhost 7000]# cp redis-7000.conf ../7002/redis-7002.conf

[root@localhost 7000]#  cp redis-7000.conf ../7003/redis-7003.conf

[root@localhost 7000]# cp redis-7000.conf ../7004/redis-7004.conf

[root@localhost 7000]#  cp redis-7000.conf ../7005/redis-7005.conf

[root@localhost 7000]# cp redis-7000.conf ../7006/redis-7006.conf

[root@localhost 7000]# cp redis-7000.conf ../7007/redis-7007.conf

[root@localhost 7000]# cp redis-7000.conf ../7008/redis-7008.conf

[root@localhost 7000]# cd ../

[root@localhost redis-3.2.8]# cd 7001

[root@localhost 7001]# vim redis-7001.conf

修改配置文件中的字段7000到7001

:%s/7000/7001/g

[root@localhost 7001]# cd ../7002

[root@localhost 7002]# vim redis-7002.conf

[root@localhost 7002]# cd ../7003

[root@localhost 7003]# vim redis-7003.conf

:%s/7000/7002/g

[root@localhost 7003]# cd ../7004

[root@localhost 7004]# vim redis-7004.conf

:%s/7000/7004/g

[root@localhost 7004]# cd ../7005

[root@localhost 7005]# vim redis

[root@localhost 7005]# vim redis-7005.conf

:%s/7000/7005/g

[root@localhost 7005]# cd ../7006

[root@localhost 7006]# vim redis-7006.conf

:%s/7000/7006/g

[root@localhost 7006]# cd ../7007

[root@localhost 7007]# vim redis-7007.conf

:%s/7000/7007/g

[root@localhost 7007]# cd ../7008

[root@localhost 7008]# vim redis-7008.conf

:%s/7000/7008/g

[root@localhost 7008]# pwd

/usr/local/src/redis-3.2.8/7008

建立start.sh

[root@localhost redis-3.2.8]# touch start.sh

配置start.sh

[root@localhost redis-3.2.8]# vim start.sh

#!/bin/sh

redis-server 7000/redis-7000.conf &

redis-server 7001/redis-7001.conf &

redis-server 7002/redis-7002.conf &

redis-server 7003/redis-7003.conf &

redis-server 7004/redis-7004.conf &

redis-server 7005/redis-7005.conf &

redis-server 7006/redis-7006.conf &

redis-server 7007/redis-7007.conf &

redis-server 7008/redis-7008.conf &

启动start.sh

[root@localhost redis-3.2.8]# sh start.sh

[root@localhost redis-3.2.8]# ps -ef | grep redis

root      5324     1  0 02:44 ?        00:00:00 redis-server *:7008 [cluster]

root      5325     1  0 02:44 ?        00:00:00 redis-server *:7007 [cluster]

root      5326     1  0 02:44 ?        00:00:00 redis-server *:7004 [cluster]

root      5327     1  0 02:44 ?        00:00:00 redis-server *:7000 [cluster]

root      5328     1  0 02:44 ?        00:00:00 redis-server *:7003 [cluster]

root      5329     1  0 02:44 ?        00:00:00 redis-server *:7002 [cluster]

root      5330     1  0 02:44 ?        00:00:00 redis-server *:7005 [cluster]

root      5331     1  0 02:44 ?        00:00:00 redis-server *:7001 [cluster]

root      5332     1  0 02:44 ?        00:00:00 redis-server *:7006 [cluster]

root      5395  5288  0 02:52 pts/4    00:00:00 grep redis

关闭防火墙

[root@localhost redis-3.2.8]# service iptables stop

[root@localhost redis-3.2.8]# redis-cli -p 7008

127.0.0.1:7008> info replication

# Replication

role:master

connected_slaves:0

master_repl_offset:0

repl_backlog_active:0

repl_backlog_size:1048576

repl_backlog_first_byte_offset:0

repl_backlog_histlen:0

127.0.0.1:7008> exit

命令执行配置1主2从结构

./src/redis-trib.rb create --replicas 2 192.168.161.138:7000 192.168.161.138:7001 192.168.161.138:7002 192.168.161.138:7003 192.168.161.138:7004 192.168.161.138:7005 192.168.161.138:7006 192.168.161.138:7007 192.168.161.138:7008

回车

[root@localhost redis-3.2.8]# ./src/redis-trib.rb create --replicas 2 192.168.161.138:7000 192.168.161.138:7001

>>> Creating cluster

*** ERROR: Invalid configuration for cluster creation.

*** Redis Cluster requires at least 3 master nodes.

*** This is not possible with 2 nodes and 2 replicas per node.

*** At least 9 nodes are required.

[root@localhost redis-3.2.8]#

[root@localhost redis-3.2.8]# 192.168.161.138:7002 192.168.161.138:7003 192.168.161.138:7004 192.168.161.138:7005

-bash: 192.168.161.138:7002: command not found

[root@localhost redis-3.2.8]#

[root@localhost redis-3.2.8]# 192.168.161.138:7006 192.168.161.138:7007 192.168.161.138:7008;

-bash: 192.168.161.138:7006: command not found

[root@localhost redis-3.2.8]# ./src/redis-trib.rb create --replicas 2 192.168.161.138:7000 192.168.161.138:7001 192.168.161.138:7002 192.168.161.138:7003 192.168.161.138:7004 192.168.161.138:7005 192.168.161.138:7006 192.168.161.138:7007 192.168.161.138:7008;

>>> Creating cluster

>>> Performing hash slots allocation on 9 nodes...

Using 3 masters:

192.168.161.138:7000

192.168.161.138:7001

192.168.161.138:7002

Adding replica 192.168.161.138:7003 to 192.168.161.138:7000

Adding replica 192.168.161.138:7004 to 192.168.161.138:7000

Adding replica 192.168.161.138:7005 to 192.168.161.138:7001

Adding replica 192.168.161.138:7006 to 192.168.161.138:7001

Adding replica 192.168.161.138:7007 to 192.168.161.138:7002

Adding replica 192.168.161.138:7008 to 192.168.161.138:7002

表示挂载成功

M表示主节点 S表示从节点信息

M: 5ca606ca99750ae6088eceb068c88b62cfae8d4b 192.168.161.138:7000

slots:0-5460 (5461 slots) master

M: 0ea8af6dc724408e19e89e3d2933335b28715237 192.168.161.138:7001

slots:5461-10922 (5462 slots) master

M: cfd38fb1d654f0ef099e54ad81bb6a08e8eb1dca 192.168.161.138:7002

slots:10923-16383 (5461 slots) master

S: 6a8c898758f8b14a6cda477b36f02879e67cc975 192.168.161.138:7003

replicates 5ca606ca99750ae6088eceb068c88b62cfae8d4b

S: 12d455b893fa251118fa16ccf37817b5ccd5746d 192.168.161.138:7004

replicates 5ca606ca99750ae6088eceb068c88b62cfae8d4b

S: 7faeed2a9f6f377b852e1079b0ad79a219e479e6 192.168.161.138:7005

replicates 0ea8af6dc724408e19e89e3d2933335b28715237

S: e6806de7d5fce3f3dcfbfe661370c05d6ce94a5f 192.168.161.138:7006

replicates 0ea8af6dc724408e19e89e3d2933335b28715237

S: 81384ae1bbab3e9ebe33509150c870820da3bc47 192.168.161.138:7007

replicates cfd38fb1d654f0ef099e54ad81bb6a08e8eb1dca

S: d607ca8480fb4889f40a7ed7f8bcaca25253a903 192.168.161.138:7008

replicates cfd38fb1d654f0ef099e54ad81bb6a08e8eb1dca

Can I set the above configuration? (type 'yes' to accept): yes

表示是否确定挂载:输入yes否则会报错

>>> Nodes configuration updated

>>> Assign a different config epoch to each node

>>> Sending CLUSTER MEET messages to join the cluster

Waiting for the cluster to join......

>>> Performing Cluster Check (using node 192.168.161.138:7000)

M: 5ca606ca99750ae6088eceb068c88b62cfae8d4b 192.168.161.138:7000

slots:0-5460 (5461 slots) master

2 additional replica(s)

S: 81384ae1bbab3e9ebe33509150c870820da3bc47 192.168.161.138:7007

slots: (0 slots) slave

replicates cfd38fb1d654f0ef099e54ad81bb6a08e8eb1dca

S: 6a8c898758f8b14a6cda477b36f02879e67cc975 192.168.161.138:7003

slots: (0 slots) slave

replicates 5ca606ca99750ae6088eceb068c88b62cfae8d4b

S: 12d455b893fa251118fa16ccf37817b5ccd5746d 192.168.161.138:7004

slots: (0 slots) slave

replicates 5ca606ca99750ae6088eceb068c88b62cfae8d4b

S: e6806de7d5fce3f3dcfbfe661370c05d6ce94a5f 192.168.161.138:7006

slots: (0 slots) slave

replicates 0ea8af6dc724408e19e89e3d2933335b28715237

S: 7faeed2a9f6f377b852e1079b0ad79a219e479e6 192.168.161.138:7005

slots: (0 slots) slave

replicates 0ea8af6dc724408e19e89e3d2933335b28715237

S: d607ca8480fb4889f40a7ed7f8bcaca25253a903 192.168.161.138:7008

slots: (0 slots) slave

replicates cfd38fb1d654f0ef099e54ad81bb6a08e8eb1dca

M: 0ea8af6dc724408e19e89e3d2933335b28715237 192.168.161.138:7001

slots:5461-10922 (5462 slots) master

2 additional replica(s)

M: cfd38fb1d654f0ef099e54ad81bb6a08e8eb1dca 192.168.161.138:7002

slots:10923-16383 (5461 slots) master

2 additional replica(s)

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

[root@localhost redis-3.2.8]# ps -ef | grep redis

root      5324     1  0 02:44 ?        00:00:01 redis-server *:7008 [cluster]

root      5325     1  0 02:44 ?        00:00:01 redis-server *:7007 [cluster]

root      5326     1  0 02:44 ?        00:00:01 redis-server *:7004 [cluster]

root      5327     1  0 02:44 ?        00:00:01 redis-server *:7000 [cluster]

root      5328     1  0 02:44 ?        00:00:01 redis-server *:7003 [cluster]

root      5329     1  0 02:44 ?        00:00:01 redis-server *:7002 [cluster]

root      5330     1  0 02:44 ?        00:00:01 redis-server *:7005 [cluster]

root      5331     1  0 02:44 ?        00:00:01 redis-server *:7001 [cluster]

root      5332     1  0 02:44 ?        00:00:01 redis-server *:7006 [cluster]

root      5445  5288  0 03:09 pts/4    00:00:00 grep redis

[root@localhost redis-3.2.8]# redis-cli -p 7000

127.0.0.1:7000> info replication

# Replication

role:master

connected_slaves:2

slave0:ip=192.168.161.138,port=7004,state=online,offset=169,lag=1

slave1:ip=192.168.161.138,port=7003,state=online,offset=169,lag=1

master_repl_offset:183

repl_backlog_active:1

repl_backlog_size:1048576

repl_backlog_first_byte_offset:2

repl_backlog_histlen:182

进入7001

[root@localhost redis-3.2.8]# redis-cli -p 7001

127.0.0.1:7001> set name jack

OK

127.0.0.1:7001> get jack

(nil)

127.0.0.1:7001> get name

"jack"

127.0.0.1:7001> exit

进入7004

[root@localhost redis-3.2.8]# redis-cli -p 7004

127.0.0.1:7004> set kkk kkk

(error) MOVED 8583 192.168.161.138:7001

127.0.0.1:7004> get name

(error) MOVED 5798 192.168.161.138:7001

127.0.0.1:7004> get name

(error) MOVED 5798 192.168.161.138:7001

127.0.0.1:7004> exit

进入7001

[root@localhost redis-3.2.8]# redis-cli -p 7001

127.0.0.1:7001> get name

"jack"

127.0.0.1:7001> info replication

# Replication

role:master

connected_slaves:2

slave0:ip=192.168.161.138,port=7005,state=online,offset=771,lag=1

slave1:ip=192.168.161.138,port=7006,state=online,offset=771,lag=1

master_repl_offset:771

repl_backlog_active:1

repl_backlog_size:1048576

repl_backlog_first_byte_offset:2

repl_backlog_histlen:770

127.0.0.1:7001> cluster nodes

d607ca8480fb4889f40a7ed7f8bcaca25253a903 192.168.161.138:7008 slave cfd38fb1d654f0ef099e54ad81bb6a08e8eb1dca 0 1517224647739 9 connected

cfd38fb1d654f0ef099e54ad81bb6a08e8eb1dca 192.168.161.138:7002 master - 0 1517224645722 3 connected 10923-16383

7faeed2a9f6f377b852e1079b0ad79a219e479e6 192.168.161.138:7005 slave 0ea8af6dc724408e19e89e3d2933335b28715237 0 1517224645722 6 connected

81384ae1bbab3e9ebe33509150c870820da3bc47 192.168.161.138:7007 slave cfd38fb1d654f0ef099e54ad81bb6a08e8eb1dca 0 1517224646731 8 connected

12d455b893fa251118fa16ccf37817b5ccd5746d 192.168.161.138:7004 slave 5ca606ca99750ae6088eceb068c88b62cfae8d4b 0 1517224646731 5 connected

5ca606ca99750ae6088eceb068c88b62cfae8d4b 192.168.161.138:7000 master - 0 1517224645722 1 connected 0-5460

6a8c898758f8b14a6cda477b36f02879e67cc975 192.168.161.138:7003 slave 5ca606ca99750ae6088eceb068c88b62cfae8d4b 0 1517224644716 4 connected

0ea8af6dc724408e19e89e3d2933335b28715237 192.168.161.138:7001 myself,master - 0 0 2 connected 5461-10922

e6806de7d5fce3f3dcfbfe661370c05d6ce94a5f 192.168.161.138:7006 slave 0ea8af6dc724408e19e89e3d2933335b28715237 0 1517224644716 7 connected

127.0.0.1:7001> info replication

# Replication

role:master

connected_slaves:2

slave0:ip=192.168.161.138,port=7005,state=online,offset=995,lag=0

slave1:ip=192.168.161.138,port=7006,state=online,offset=995,lag=0

master_repl_offset:995

repl_backlog_active:1

repl_backlog_size:1048576

repl_backlog_first_byte_offset:2

repl_backlog_histlen:994

127.0.0.1:7001> exit

关闭7001

[root@localhost redis-3.2.8]# redis-cli -p 7001 shutdown

进入7006

[root@localhost redis-3.2.8]# redis-cli -p 7006

127.0.0.1:7006> info replicaion

127.0.0.1:7006> info replication

# Replication

role:master

connected_slaves:1

slave0:ip=192.168.161.138,port=7005,state=online,offset=85,lag=1

master_repl_offset:85

repl_backlog_active:1

repl_backlog_size:1048576

repl_backlog_first_byte_offset:2

repl_backlog_histlen:84

127.0.0.1:7006> exit

[root@localhost redis-3.2.8]# ps -ef | grep redis

root      5324     1  0 02:44 ?        00:00:03 redis-server *:7008 [cluster]

root      5325     1  0 02:44 ?        00:00:03 redis-server *:7007 [cluster]

root      5326     1  0 02:44 ?        00:00:03 redis-server *:7004 [cluster]

root      5327     1  0 02:44 ?        00:00:03 redis-server *:7000 [cluster]

root      5328     1  0 02:44 ?        00:00:03 redis-server *:7003 [cluster]

root      5329     1  0 02:44 ?        00:00:03 redis-server *:7002 [cluster]

root      5330     1  0 02:44 ?        00:00:03 redis-server *:7005 [cluster]

root      5332     1  0 02:44 ?        00:00:03 redis-server *:7006 [cluster]

root      5464  5288  0 03:22 pts/4    00:00:00 grep redis

重启7001

[root@localhost redis-3.2.8]# redis-server 7001/redis-7001.conf

[root@localhost redis-3.2.8]# redis-cli -p 7001

127.0.0.1:7001> info replication

# Replication

role:slave

master_host:192.168.161.138

master_port:7006

master_link_status:up

master_last_io_seconds_ago:5

master_sync_in_progress:0

slave_repl_offset:365

slave_priority:100

slave_read_only:1

connected_slaves:0

master_repl_offset:0

repl_backlog_active:0

repl_backlog_size:1048576

repl_backlog_first_byte_offset:0

repl_backlog_histlen:0

127.0.0.1:7001>

Redis搭建多台哨兵的更多相关文章

  1. Redis主从配置和哨兵监控配置——服务器端环境搭建

    一:介绍 公司用到的redis框架,主要分为cluster的缓存集群和sentinel中的哨兵主从.这种的选用方式一般需要更具业务场景来做区分,两种框架的配置图为:右图为哨兵主从框架和cliuster ...

  2. redis集群sentinel哨兵模式的搭建与实际应用

    参考资料:https://blog.csdn.net/men_wen/article/details/72724406 之前环境使用的keepalived+redis vip集群模式,现在我们服务切换 ...

  3. linux系统——Redis集群搭建(主从+哨兵模式)

    趁着这几天刚好有点空,就来写一下redis的集群搭建,我跟大家先说明,本文的redis集群因为linux服务器只是阿里云一台服务器,所以集群是redis启动不同端口,但是也能达到集群的要求.其实不同服 ...

  4. redis高可用(哨兵机制)

    redis哨兵机制:redis的哨兵系统用于管理多个reids服务器,该系统主要有三个作用: 监控:哨兵 会不断地检查你的主服务(Master)和从服务器(Slave)是否运作正常. 提醒:当被监控的 ...

  5. Redis高可用之哨兵模式Sentinel配置与启动(五)

    0.Redis目录结构 1)Redis介绍及部署在CentOS7上(一) 2)Redis指令与数据结构(二) 3)Redis客户端连接以及持久化数据(三) 4)Redis高可用之主从复制实践(四) 5 ...

  6. redis主从配置+sentinel哨兵

    redis主从配置+sentinel哨兵 1:编译环境准备 1.1环境确认 Redis是一个开源.支持网络.基于内存.键值对存储数据库,使用ANSI C编写.所以在搭建Redis服务器时需要C语言的编 ...

  7. Redis实战——redis主从备份和哨兵模式实践

    借鉴:http://redis.majunwei.com/topics/sentinel.html     https://blog.csdn.net/u011784767/article/detai ...

  8. java架构之路-(Redis专题)Redis的主从、哨兵和集群

    我们使用的redis,单机的绝对做不到高可用的,万一单机的redis宕机了,就没有备用的了,我们可以采用集群的方式来保证我们的高可用操作. 主从架构 大致就是这样的,一个主节点,两个从节点(一般两个就 ...

  9. Redis集群--Redis集群之哨兵模式

    echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! 搭建R ...

随机推荐

  1. BZOJ2820 - 巧克力王国

    原题链接 Description 给出个二维平面上的点,第个点为,权值为.接下来次询问,给出,求所有满足的点的权值和. Solution 对于这个点建一棵k-d树,子树维护一个子树和. 如果子树所代表 ...

  2. Enum枚举写的一个简单状态机

    今天下雨,心情有点压抑,所以用枚举写个状态机排解一下心情,顺便记录一下枚举使用方法. package statemachine; import java.util.ArrayList; import ...

  3. 浅谈JavaScript位操作符

    因为ECMAscript中所有数值都是以IEEE-75464格式存储,所以才会诞生了位操作符的概念. 位操作符作用于最基本的层次上,因为数值按位存储,所以位操作符的作用也就是操作数值的位.不过位操作符 ...

  4. R+tmcn笔记︱tmcn包的基本内容以及李舰老师R语言大会展示内容摘录

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- tmcn包目前托管在在R-forge 上开发和 ...

  5. AndroidDevTools

    收集整理Android开发所需的Android SDK.开发中用到的工具.Android开发教程.Android设计规范,免费的设计素材等. 欢迎大家推荐自己在Android开发过程中用的好用的工具. ...

  6. 利用apache自带的工具 分割访问日志

    httpd.conf中CustomLog logs/access.log common 改成 CustomLog "|c:/apache/bin/rotatelogs.exe c:/apac ...

  7. Srtuts2实现登录界面(不连接数据库)报错(一)

    二月 28, 2014 11:32:02 下午 org.apache.catalina.core.AprLifecycleListener init 严重: An incompatible versi ...

  8. vxworks for x86读取bios时间的解决方法

    vxworks for x86读取bios时间的解决方法 系统时间与bsp有关,在vzworks for x86系列的目标没有直接读取RTC(实时时钟控制器)的函数,用time.h中的函数读到的始终是 ...

  9. Caused by: java.lang.ClassNotFoundException: org.springframework.orm.hibernate4.HibernateTemplate

    1.错误描述 严重: Context initialization failed org.springframework.beans.factory.CannotLoadBeanClassExcept ...

  10. 使用NPOI导入导出标准Excel

    尝试过很多Excel导入导出方法,都不太理想,无意中逛到oschina时,发现了NPOI,无需Office COM组件且不依赖Office,顿时惊为天人,怀着无比激动的心情写下此文. 曾使用过的方法 ...