首页 > 数据库 > NoSQL > redis单机多实例,主从及哨兵集群
Redis 单机多实例部署方法十分简单,只要复制多个 redis 配置文件即可。需要注意每个实例的端口不能冲突。

redis_6380.conf redis_6381.conf 分别监听6380端口 和 6381 端口
修改非常简单。。只要改配置文件中的port及pidfile参数
cp redis.conf redis_6380.conf
$ vim /etc/redis/redis_6382.conf port 6380 daemonize yes pidfile /var/run/redis_6380.pid
====================
redis_6381.conf 也和上面一样改一下对应的参数
启动redis 6380端口
/usr/local/redis/redis-5.0.7/bin/redis-server /usr/local/redis/redis-5.0.7/redis_6380.conf &
启动redis 6381端口
/usr/local/redis/redis-5.0.7/bin/redis-server /usr/local/redis/redis-5.0.7/redis_6381.conf &
通过ps -ef|grep redis
查看redis是否启动成功
============================主从配置==================================
主从的配置。配置在本机上
修改配置文件参数,
#核心参数slaveof,master的ip 及 port 如果同时搭建了哨兵 会因为高可用切换。哨兵会重写这个值
slaveof 127.0.0.1 6380
redis重启
/usr/local/redis/redis-5.0.7/bin/redis-server /usr/local/redis/redis-5.0.7/redis_6381.conf
查看状态
info replication
==========================哨兵配置===========================
复制多个哨兵配置文件。。修改配置文件就可以启动哨兵, 环境有限,在单机上搭建集群
cp sentinel.conf sentinel_26380.conf
cp sentinel.conf sentinel_36380.conf
cp sentinel.conf sentinel_36380.conf
修改配置参数 核心的配置参数
port 26380
sentinel monitor mymaster 127.0 .0 .1 6380 2
logfile "/usr/local/redis/redis_sentinel.log"
pidfile "/var/run/redis-sentinel.pid"
#myid 这个值 复制过去的时候 需要删除。。让哨兵自动产生。这样才能成为一个集群,这个值不能重复
sentinel myid b9654be67fb4ddff54046ab68bb8936731584437
按照上面这个配置。在修改另外两个 配置文件
重启哨兵
启动命令
/usr/local/redis/redis-5.0.7/bin/redis-server /usr/local/redis/redis-5.0.7/sentinel_26380.conf --sentinel
查看哨兵状态
info sentinel
所有的都搭建完成之后 架构如下图 三台哨兵集群,一套redis主从

=====================哨兵链接============================
单机版redis的链接方式
import redis
from redis.sentinel import Sentinel
#访问redis
conn = redis.Redis(host="127.0.0.1", port=6380,password="")
conn.set("x2","hello")
val = conn.get("x2")
print(val)
print (1)
哨兵集群的链接方式
import redis
from redis.sentinel import Sentinel
#访问哨兵
#哨兵集群信息 ip 端口
sentinel = Sentinel([('127.0.0.1', 26380),('127.0.0.1', 36380),('127.0.0.1', 46380)])
# 获取主服务器redis地址
master = sentinel.discover_master('mymaster')
print(master)
# 获取从服务器redis地址
slave = sentinel.discover_slaves('mymaster')
print(slave)
#主服务器写入
master = sentinel.master_for('mymaster', password='', db=0)
w_ret = master.set('x4', 'hello4')
#从服务器读取
slave = sentinel.slave_for('mymaster', password='', db=0)
r_ret = slave.get('x4')
print(r_ret)
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30127122/viewspace-2759387/ ,如需转载,请注明出处,否则将追究法律责任。