客户端C连接redis集群的A节点是可以的,但是无法连接B节点。A、B作为集群不同的分片是互通的。
此时客户端要读取B上的数据,是否可以获取到?
如果可以,是如何传递数据的?
如果不可以,这是否属于一种单点问题?
学习redis集群过程中遇到一个问题,希望有人能帮忙解答,十分感激
自测结果补充:
自己搭建完了一个集群后尝试以上情况,发现客户端无法从B中读写数据。
如下图:服务器上7002端口并没有对外开放,本地客户端只能通过7001端口访问集群。当尝试读写B上的key时,由于客户端无法成功重定向,导致失败
为什么使用跳表:
1、性能考虑:在高并发的情况下,树形结构需要执行一些类似于 rebalance 这样的可能涉及整棵树的操作,相对来说跳跃表的变化只涉及局部2、实现考虑:在复杂度与红黑树相同的情况下,跳跃表实现起来更简单,看起来也更加直观;
为啥不用B+:
B+树的原理是 叶子节点存储数据,非叶子节点存储索引,B+树的每个节点可以存储多个关键字,它将节点大小设置为磁盘页的大小,充分利用了磁盘预读的功能。每次读取磁盘页时就会读取一整个节点,每个叶子节点还有指向前后节点的指针,为的是最大限度的降低磁盘的IO;因为数据在内存中读取耗费的时间是从磁盘的IO读取的百万分之一
时间复杂度:
O(logn)