当前位置: 首页 > news >正文

5-redis高级-哨兵

1 哨兵
1.1 python 操作哨兵

1 哨兵

# 主从---》一主多从-主库用来写-从库用来读-主库挂了--》整个系统就不能写数据了#主从复制存在的问题:1 主从复制,主节点发生故障,需要做故障转移,可以手动转移:让其中一个slave变成master---》哨兵 高可用2 主从复制,只能主写数据,所以写能力和存储能力有限--》集群# 高可用:服务的高度可用性  公司追求 4个9哨兵---》sentinal---》监控主库变化---》如果主库挂了--》自动选择一个从库---》做故障切换---》把从库升级为主库---》还能对外提供服务# 架构3个redis服务---3台机器3个sentinal---3台机器启动3个redis-server进程启动3个redis-sentinal进程# 搭建步骤- 先搭建一主两从# 第一步:搭建一主两从
daemonize yes
pidfile /var/run/redis.pid
port 6379
dir "/root/redis/data"
logfile “6379.log”#第二个是从配置文件
daemonize yes
pidfile /var/run/redis2.pid
port 6378
dir "/root/redis/data"
logfile “6378.log”
slaveof 127.0.0.1 6379
slave-read-only yes#第三个是从配置文件
daemonize yes
pidfile /var/run/redis3.pid
port 6377
dir "/root/redis/data"
logfile “6377.log”
slaveof 127.0.0.1 6379
slave-read-only yes
# 第二步:启动三个哨兵--》监控一主两从的关系
port 26379
daemonize yes
dir ./data3
protected-mode no
bind 0.0.0.0
logfile "redis_sentinel79.log"
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000port 26380
daemonize yes
dir ./data3
protected-mode no
bind 0.0.0.0
logfile "redis_sentinel80.log"
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000port 26381
daemonize yes
dir ./data3
protected-mode no
bind 0.0.0.0
logfile "redis_sentinel81.log"
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000redis-sentinel ./sentinel_6379.conf
redis-sentinel ./sentinel_6380.conf
redis-sentinel ./sentinel_6381.conf#第三步:等待主库挂掉
# 第四步:自动切换主库
# 第五步:以后原来的主库启动,会变为从库

1.1 python 操作哨兵

import redis
from redis.sentinel import Sentinel# 连接哨兵服务器(主机名也可以用域名)
sentinel = Sentinel([('127.0.0.1', 26379),('127.0.0.1', 26380),('127.0.0.1', 26381)],socket_timeout=5)print(sentinel)
# 获取主服务器地址
master = sentinel.discover_master('mymaster')
print(master)# 获取从服务器地址
slave = sentinel.discover_slaves('mymaster')
print(slave)##### 读写分离
# 获取主服务器进行写入
master = sentinel.master_for('mymaster', socket_timeout=0.5)
print('master----',master)
w_ret = master.set('foo', 'bar')slave = sentinel.slave_for('mymaster', socket_timeout=0.5)
print('slave----',slave)
r_ret = slave.get('foo')
print(r_ret)
http://www.lryc.cn/news/254290.html

相关文章:

  • 鸿蒙HarmonyOS4.0开发应用学习笔记
  • 联通宽带+老毛子Padavan固件 开启IP v6
  • 唯创知音WT2003Hx系列单片机语音芯片:家庭理疗产品的智能声音伴侣
  • 2023_Spark_实验二十七:Linux中Crontab(定时任务)命令详解及使用教程
  • Java动态代理实现与原理详细分析
  • [实践总结] 使用Apache HttpClient 4.x进行进行一次Http请求
  • 易宝OA 两处任意文件上传漏洞复现
  • echart饼图高亮颜色设置,数据为0时候,labelLine不显示
  • Kafka 的消息格式:了解消息结构与序列化
  • 装箱 Box 数据类型
  • 多传感器融合SLAM在自动驾驶方向的初步探索的记录
  • ffmpeg与opencv-python处理视频
  • java 操作git
  • Linux 导入、导出 MySQL 数据库命令
  • 华为数通---BFD多跳检测示例
  • AWS 日志分析工具
  • gitLab 和Idea分支合并
  • 关于 mapboxgl 的常用方法及效果
  • C语言——二级指针
  • 股市复苏中的明懿金汇:抓住新机遇
  • Spacemesh、Kaspa和Chia的全面对比!
  • 【HTML语法】
  • ROS报错:RLException:Invalid roslaunch XML Syntax: mismatched tag:
  • C语言实现快速排序
  • ChatGPT对于当今的社会或科技发展有何重要性?
  • 宝塔是可以切换mongodb版本的
  • 16、XSS——会话管理
  • 稀疏矩阵的操作(数据结构实训)
  • sqlite - sqlite3_exec - c++回调函数的处理
  • docker搭建logstash和使用方法