java jediscluster_【集群】JedisCluster 原理

java jediscluster_【集群】JedisCluster 原理1.JedisCluster类结构JedisCluster是针对RedisCluster的java客户端,它封装了java访问redis集群的各种操作,包括初始化连接、请求重定向等。我们先来看下JedisCluster的类结构:JedisCluster初始化时,所有的集群连接信息都是封装在JedisClusterInfoCache里,由于jedis本身不是线程安全的,所以使用对象池JedisPo…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

1. JedisCluster类结构

JedisCluster是针对RedisCluster的java客户端,它封装了java访问redis集群的各种操作,包括初始化连接、请求重定向等。我们先来看下JedisCluster的类结构:

8ae099ea21283a918059f0dd07087bbb.png

JedisCluster初始化时,所有的集群连接信息都是封装在JedisClusterInfoCache里,由于jedis本身不是线程安全的,所以使用对象池JedisPool来保证线程安全,在JedisClusterInfoCache中,除了要保存节点和槽的一一对应关系,还要为每个节点建立一个对象池JedisPool,并保存在map。这个类主要用于保存集群的配置信息,并且是JedisCluster初始化部分的核心所在。JedisClusterConnectionHandler是cache类的一个窗口,cache类似数据管理层,而Handler就类似于操控数据提供服务的Service层。

2. JedisCluster调用时序

0d75dac5bb84adc58a9602239610d1e9.png

从上图可以看出,Jedis建立集群的过程很清晰,传入节点信息,通过其中一个节点从redis服务器拿到整个集群的信息,包括槽位对应关系,主从节点的信息,将这些信息保存在JedisClusterInfoCache中。

JedisCluster的调用流程

Set jedisClusterNode = new HashSet();

jedisClusterNode.add(new HostAndPort(“127.0.0.1”, 7379));

JedisCluster jc = new JedisCluster(jedisClusterNode, DEFAULT_TIMEOUT, DEFAULT_TIMEOUT,

DEFAULT_REDIRECTIONS, “cluster”, DEFAULT_CONFIG);

jc.set(“foo”, “bar”);

assertEquals(“bar”, jc.get(“foo”));

ccedf56d83d76aa139b19bda42f9dac8.png

86053cfef78b77c1d1fec52c12710576.png

在发送请求时,JedisCluster对象先从初始化得到的集群map中获取key对应的节点连接,即一个可用的Jedis对象。然后通过这个对象发送get key 命令。

通常,根据key计算槽位得到的节点不会报错。所以如果发生connectionException,或者MovedDataException,说明初始化得到的槽位与节点的对应关系有问题,即与实际的对应关系不符,应当重置map。 如果出现ASK异常,说明数据正在迁移,需要临时使用返回消息指定的地址,重新发送命令。在这里,Jedis通过异常反馈,智能地同步了客户端与服务端的集群信息。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/182144.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C语言实现五子棋小游戏

    C语言实现五子棋小游戏三子棋,五子棋,无论多少子棋,其原理都是一样的。下面我用五子棋为例讲解用C语言多文件编程实现五子棋。设计电脑和玩家两个作为下棋的两方,用键盘输入作为玩家的游戏操作。1.效果图:程序总的构架:我们只要输入坐标就可以和电脑对弈了。电脑的棋子用‘0’表示,玩家的棋子用‘x’表示。2.打印菜单可以根据自己的爱好设计各种风格的…

    2022年5月12日
    44
  • 刀塔2显示连接服务器调解中,大师调解正在连接至dota2网络 【操作方案】 的具体步骤_…

    刀塔2显示连接服务器调解中,大师调解正在连接至dota2网络 【操作方案】 的具体步骤_…近日有小伙伴发现电脑出现问题了,在突然遇到正在连接至dota2网络时不知所措了,对于正在连接至dota2网络带来的问题,其实很好解决正在连接至dota2网络带来的问题,下面小编跟大家介绍正在连接至dota2网络解决方法:一直卡在正在连接至dota2网络什么情况答:您好,若您运行DOTA2时遇到无法连接到DOTA2网络或一直显示正在连接到DOTA2网络,请您完全关闭DOTA2国服客户端,再重新启…

    2022年5月17日
    59
  • 2019工程伦理慕课答案(2019秋)习题及期末答案

    2019工程伦理慕课答案(2019秋)习题及期末答案第一章习题(下)单选题(1/1point)下列哪一项不是工程与技术的区别内容和性质目的活动主体任务、对象和思维方式单选题(1/1point)下列哪一项不是工程活动的特征自主性创造性社会性确定性多选题(1points)下列哪项是工程的完整生命周期中的环节计划设计评估完成判断题(1/1point)计划、设计、建造…

    2022年5月30日
    39
  • 开发MT4指标和EA(自动交易系统)

    开发MT4指标和EA(自动交易系统)对外开发MT4指标和EA(自动交易系统)开发MT4指标或EA(自动交易系统)需按照标准格式,撰写如下内容文档。而后会评估价格和你联系.联系电子邮件,alantop@qq.com指标或EA的参数是否…

    2022年5月7日
    57
  • Tps是什么_PHP接口

    Tps是什么_PHP接口tps是啥?TPS,为Transactionprocessingsystems的缩写,是一个事务处理系统,又称为电子数据处理系统(electronicdataprocessingsystem,EDPS),它是指面向企业最底层的管理系统,对企业日常运作所产生的事务信息进行处理。特点:1、保持应用程序的完整性任何应用程序的关键是要确保它所执行的所有操作都是正确的,如果应用程序仅仅是部分地完…

    2022年10月9日
    2
  • Idea激活码最新教程2019.3.5版本,永久有效激活码,亲测可用,记得收藏

    Idea激活码最新教程2019.3.5版本,永久有效激活码,亲测可用,记得收藏Idea 激活码教程永久有效 2019 3 5 激活码教程 Windows 版永久激活 持续更新 Idea 激活码 2019 3 5 成功激活

    2025年5月23日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号