REDIS主从搭建
Posted Lossdate
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了REDIS主从搭建相关的知识,希望对你有一定的参考价值。
一、搭建主从配置
-
这里在一台机器上采用伪分布式的方式部署(生产环境应该是多台机器)
-
安装redis5.0以上
mkdir redis-master redis-slave1 redis-slave2 tar -zxvf redis-5.0.10.tar.gz cd redis-5.0.10 make install PREFIX=/usr/local/redis-ms/redis-master/ cp redis.conf /usr/local/redis-ms/redis-master/bin/
问题1:gcc:命令未找到
yum -y install gcc automake autoconf libtool make
问题2:致命错误:jemalloc/jemalloc.h:没有那个文件或。。。
make MALLOC=libc
-
修改redis.conf
# 将`daemonize`由`no`改为`yes` daemonize yes # 默认绑定的是回环地址,默认不能被其他机器访问 # bind 127.0.0.1 # 是否开启保护模式,由yes该为no protected-mode no #有密码的话 requirepass 123456 masterauth 123456
-
复制master到slave
cp -r redis-master/* /usr/local/redis-ms/redis-slave1 cp -r redis-master/* /usr/local/redis-ms/redis-slave2
修改slave1的redis.conf
#port改为6380,并加上replicaof 127.0.0.1 6379 port 6380 replicaof 127.0.0.1 6379
修改slave2的redis.conf
#port改为6381,并加上replicaof 127.0.0.1 6379 port 6381 replicaof 127.0.0.1 6379
-
启动
cd redis-master/bin/ ./redis-server redis.conf cd ../../redis-slave1/bin/ ./redis-server redis.conf cd ../../redis-slave2/bin/ ./redis-server redis.conf
-
测试
在master插入数据cd ../../redis-master/bin ./redis-cli 127.0.0.1:6379> set name Tom
在slave里检验是否同步
cd /usr/local/redis-ms/redis-slave1/bin ./redis-cli -p 6380 127.0.0.1:6380> get name
二、哨兵模式
- kill上一步已启动的reids
- 创建三个sentinel
cd /usr/local/redis-ms mkdir redis-sentinel1 redis-sentinel2 redis-sentinel3
- 复制及配置
修改配置文件cp -r redis-master/* /usr/local/redis-ms/redis-sentinel1 cp redis-5.0.10/sentinel.conf redis-sentinel1/bin/ cd redis-sentinel1/bin/ vim sentinel.conf
这里修改 daemonize 为 yes
修改sentinel down-after-milliseconds mymaster 30000 改为 3000
其它的可以不用改
有密码的话:
sentinel auth-pass mymaster 123456
注意位置,要在sentinel monitor mymaster 127.0.0.1 6379 2后面
sentinel down-after-milliseconds mymaster 3000 : 指定多少毫秒之后
主节点没有应答哨兵sentinel 此时 哨兵主观上认为主节点下线 默认30秒,改成3秒
- 复制sentinel1到sentinel2和3
cp -r redis-sentinel1/* redis-sentinel2 cd redis-sentinel2/bin/ vim sentinel.conf #修改port为26380 port 26380 cd ../../ cp -r redis-sentinel1/* redis-sentinel3 cd redis-sentinel3/bin/ vim sentinel.conf #修改port为26381 port 26381
- 启动
依次启动
redis-master、redis-slaver1、redis-slaver2、
redis-sentinel1、redis-sentinel2、redis-sentinel3#启动redis-master和redis-slaver #在redis-master目录下 ./redis-server redis.conf #在redis-slaver1目录下 ./redis-server redis.conf #在redis-slaver2目录下 ./redis-server redis.conf #启动redis-sentinel #在redis-sentinel1目录下 ./redis-sentinel sentinel.conf #在redis-sentinel2目录下 ./redis-sentinel sentinel.conf #在redis-sentinel3目录下 ./redis-sentinel sentinel.conf
以上是关于REDIS主从搭建的主要内容,如果未能解决你的问题,请参考以下文章
Redis主从与哨兵架构详解 Redis主从架构 如何在同一台机器搭建主从架构 Redis主从工作原理 数据部分复制 Jedis使用 Redis的管道(Pipeline) Redis Lua脚本(代码