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

哨兵原理、Redis分片、Redis数据结构、内存回收、缓存问题以及分布式事务相关内容(CAP、BASE、AT脏写及其解决、TCC、最大努力通知)

目录

一、哨兵原理

服务状态监控:

选举新的master:

如何实现故障转移:

哨兵原理总结:

二、搭建哨兵集群

三、Redis分片

搭建分片集群:

散列插槽:

四、Redis数据结构:

RedisObject:

SkipList:

SortedSet:

五、Redis内存回收:

内存淘汰策略:

六、缓存问题

缓存一致性:

缓存穿透:

缓存雪崩:

缓存击穿:

七、分布式事务理论基础——CAP和BASE

八、AT模式脏写问题

九、TCC模式

十、最大努力通知:


一、哨兵原理

服务状态监控:

选举新的master:

如何实现故障转移:

哨兵原理总结:

二、搭建哨兵集群

        接下来我们开始手动搭建哨兵集群:

1.通过docker compose down指令关闭redis主从集群:

2.为三个哨兵创建各自的文件夹mkdir s1 s2 s3:

3.拷贝sentinel.conf配置文件到虚拟机当中,内容如下:

sentinel announce-ip "192.168.150.101" #虚拟机ip
sentinel monitor hmaster 192.168.150.101 7001 2 #告诉哨兵master的地址端口以及客观下线的quorum值
sentinel down-after-milliseconds hmaster 5000 #哨兵认为master宕机的连接超时时间
sentinel failover-timeout hmaster 60000 #哨兵对死去的master进行故障恢复的间隔时间,即每分钟进行连接重试

4.通过cp s1/sentinel.conf s2来快速拷贝文件:

5.修改原先的yml文件内容:

version: "3.2"services:r1:image: redis:6.2.7container_name: r1network_mode: "host"entrypoint: ["redis-server", "--port", "7001"]r2:image: redis:6.2.7container_name: r2network_mode: "host"entrypoint: ["redis-server", "--port", "7002", "--slaveof", "192.168.150.101", "7001"]r3:image: redis:6.2.7container_name: r3network_mode: "host"entrypoint: ["redis-server", "--port", "7003", "--slaveof", "192.168.150.101", "7001"]s1:image: redis:6.2.7container_name: s1volumes:- /root/redis/s1:/etc/redisnetwork_mode: "host"entrypoint: ["redis-sentinel", "/etc/redis/sentinel.conf", "--port", "27001"]s2:image: redis:6.2.7container_name: s2volumes:- /root/redis/s2:/etc/redisnetwork_mode: "host"entrypoint: ["redis-sentinel", "/etc/redis/sentinel.conf", "--port", "27002"]s3:image: redis:6.2.7container_name: s3volumes:- /root/redis/s3:/etc/redisnetwork_mode: "host"entrypoint: ["redis-sentinel", "/etc/redis/sentinel.conf", "--port", "27003"]

        然后通过docker compose up -d指令启动:

这样我们就搭建好了哨兵集群

接下来我们来分析一下整个过程:

三、Redis分片

搭建分片集群:

1.在root目录下新建redis-cluster文件夹并添加yml配置文件,内容如下:

version: "3.2"services:r1:image: redis:6.2.7container_name: r1network_mode: "host"entrypoint: ["redis-server", "--port", "7001", "--cluster-enabled", "yes", "--cluster-config-file", "node.conf"]r2:image: redis:6.2.7container_name: r2network_mode: "host"entrypoint: ["redis-server", "--port", "7002", "--cluster-enabled", "yes", "--cluster-config-file", "node.conf"]r3:image: redis:6.2.7container_name: r3network_mode: "host"entrypoint: ["redis-server", "--port", "7003", "--cluster-enabled", "yes", "--cluster-config-file", "node.conf"]r4:image: redis:6.2.7container_name: r4network_mode: "host"entrypoint: ["redis-server", "--port", "7004", "--cluster-enabled", "yes", "--cluster-config-file", "node.conf"]r5:image: redis:6.2.7container_name: r5network_mode: "host"entrypoint: ["redis-server", "--port", "7005", "--cluster-enabled", "yes", "--cluster-config-file", "node.conf"]r6:image: redis:6.2.7container_name: r6network_mode: "host"entrypoint: ["redis-server", "--port", "7006", "--cluster-enabled", "yes", "--cluster-config-file", "node.conf"]

        然后手动关闭原先搭建好的哨兵集群(指令:docker compose down):

        接着来到redis-cluster文件夹下通过docker compose up -d指令启动集群:

2.此时只是创建好了六个容器,它们之间并没有分片或者集群关系,所以我们接下来要配置分片集群关系:

# 进入任意节点容器
docker exec -it r1 bash
# 然后,执行命令
redis-cli --cluster create --cluster-replicas 1 \
192.168.150.101:7001 192.168.150.101:7002 192.168.150.101:7003 \
192.168.150.101:7004 192.168.150.101:7005 192.168.150.101:7006

命令说明:

  • redis-cli --cluster:代表集群操作命令

  • create:代表是创建集群

  • --cluster-replicas 1 :指定集群中每个master的副本个数为1

    • 此时节点总数 ÷ (replicas + 1) 得到的就是master的数量n。因此节点列表中的前n个节点就是master,其它节点都是slave节点,随机分配到不同master

        随后,虚拟机会询问你是否接收配置结果,输入yes完成配置:

        可以通过redis-cli -p 7001 cluster nodes指令查看分片集群部署关系:

散列插槽:

四、Redis数据结构:

RedisObject:

SkipList:

SortedSet:

五、Redis内存回收:

内存淘汰策略:

六、缓存问题

缓存一致性:

缓存穿透:

缓存雪崩:

缓存击穿:

七、分布式事务理论基础——CAP和BASE

八、AT模式脏写问题

        回顾一下AT模式原理:

九、TCC模式

十、最大努力通知:

http://www.dtcms.com/a/540597.html

相关文章:

  • Windows图标修复--缓存重建教程
  • 服务器上用Slurm 管理训练bash 脚本任务,申明使用GPU
  • 上海小程序网站开发公司wordpress国外主题下载地址
  • 新城镇建设官方网站kali建设网站
  • 便携式el检测仪:确保光伏组件的质量与性能稳定
  • 英一2015年真题学习笔记
  • Docker 部署银河麒麟(Kylin Linux)全流程教程
  • GPT、DeepSeek等大语言模型应用
  • 大语言模型基础LLM:Transformer和大模型
  • 本地用docker开发的php 程序如何部署到阿里云的ecs上
  • html css js网页制作成品——一念关山HTML+CSS网页设计(5页)附源码
  • BuildingAI二开 Coze套餐管理页面PRD
  • 加强学院网站的建设与管理一个完整的外贸流程
  • 大屏开发,在线歌词舆情分析系统demo,基于python,flask,web,echart,nlp,自然语言数据库mysql。
  • 网站后台上传缩略图高端网站开发哪家强
  • SAP GUI 800进行品牌化设置
  • unity打包安卓设置为横屏
  • final是干嘛的
  • 马赛克数据增强与 Tensor、TensorFlow 区别学习总结
  • 【Node】win 10 / win 11:node.js 长期维护版下载、安装与 npm 配置
  • 青岛公司网站建设开发南京网站建设与维护
  • 宠物系统功能演示
  • 具身智能的平民化浪潮:从表演秀到产业变革临界点
  • Geoserver漏洞图形化利用工具
  • 沈阳公司网站设计类似58的推广平台有哪些平台
  • 最小二乘问题详解6:梯度下降法
  • Linux内核RDMA计数器机制:深入解析与实现原理
  • iOS 反编译防护工具与实战组合 从静态侦察到 IPA 成品加固的工程化路径
  • 微信小程序组件中二维码生成问题解决方案
  • 网站文件解压北仑装修公司哪家最好