jedis和jediscluster_java coroutine

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

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

Jetbrains全系列IDE稳定放心使用

1. JedisCluster类结构

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

5ca98b5a336b

jedisCluster.png

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

2. JedisCluster调用时序

5ca98b5a336b

jedisClusterSequential.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”));

5ca98b5a336b

image.png

5ca98b5a336b

clusterNote.png

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

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

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

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

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


相关推荐

  • 图片懒加载原理及实现(java懒加载原理)

    一,前置知识1,为什么要图片懒加载懒加载是一种对网页性能优化的方式,比如当访问一个页面的时候,优先显示可视区域的图片而不是一次性加载所有图片,当需要显示时,再发送图片请求,避免打开网页时加载过多资源。当一个网站的加载图片过多时就需要懒加载的协助,页面图片多时,在首次载入时一次性加载会耗费时间长,使用懒加载可以使页面加载速度快、减轻服务器的压力、节省流量。如下图:随着滚轮滚动,底部的图片会被不断地加载,从而显示在页面上,也就是说懒加载其实就是按需加载,当页面需要显示图片的时候才进行加载,否则不加载

    2022年4月16日
    67
  • php递归算法经典实例_php递归函数详解

    php递归算法经典实例_php递归函数详解在前面的文章中,我们给大家介绍了三种递归算法的实现方法,即“静态变量”、“全局变量”、“引用传参”。需要的朋友可以了解《PHP递归算法(一)》《PHP递归算法(二)》《PHP递归算法(三)》下面我们就给大家介绍如何通过xdebug调试运行PHP引用传参的递归算法。代码如下:…

    2022年8月11日
    7
  • Drupal 默认安装的目录结构

    Drupal 默认安装的目录结构文件夹目录中的每一元素的详解如下:includes:包含了Drupal常用的函数库。misc:用来存储Drupal安装中可用的JavaScript,和其它各种图标和图片文件。modules:包含了所有核心模块,其中一个模块对应一个文件夹。最好不要乱动这个文件夹(包括profiles和sites以外的其它目录)下面的任何东西,你要添

    2022年7月20日
    16
  • 云服务器上装软件吗,云服务器能安装软件吗?[通俗易懂]

    云服务器上装软件吗,云服务器能安装软件吗?[通俗易懂]云服务器能安装软件吗?有些时候电脑需要杀毒软件是很正常的事情,但是相比于这些庞大的云系统来说,一般的杀毒软件是根本运作不起来的,因为一旦安装了杀毒软件,肯定是要全部杀毒的,不可能这个系统可以,那个系统就不可以,这就谈到了一个空间包含的问题。如果包含量太小的话,也是没有什么作用的,那么云服务器能安装什么杀毒软件呢?什么样的杀毒软件才能够更好的运转起这个庞大的空间系统呢?对于庞大的空间系统,很多厂家为…

    2022年5月23日
    53
  • pycharm激活码2021年7月【2021免费激活】

    (pycharm激活码2021年7月)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlBI7JCUH1TG-eyJsa…

    2022年3月22日
    49
  • drone无人机操作教程_无人机怎么起飞教程

    drone无人机操作教程_无人机怎么起飞教程教程:使用DroneKit在室内控制无人机DroneKit-Python是一个用于控制无人机的Python库。DroneKit提供了用于控制无人机的API,其代码独立于飞控,单独运行在机载电脑(CompanionComputer)或其他设备之上,通过串口或无线的方式经MAVLink协议与飞控板通信。除了DroneKit-Python以外,还有DroneKit-Android以及DroneKit-C

    2022年8月15日
    58

发表回复

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

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