Redis-重定向

在这里插入图片描述

实验环境(3主3从的Redis-Cluster)

在这里插入图片描述
在这里插入图片描述

一、Redis重定向基础篇

1、MOVED重定向
Redis Custer 中,客户端可以向集群中任意节点发送请求。此时当前节点先对 Key 进行 CRC 16 计算,然后按 16384 取模确定 Slot 槽。确定该 Slot 槽所对应的节点,如果该 Slot 是当前节点负责,且该 Key 存在于该 Slot 中,则直接返回该 Key 对应的结果;如果该 Slot 不是当前节点负责,则返回 MOVED 重定向告知客户端对应的节点地址信息。

2、测试
连接到redis-cluster

cd /opt	
./redis-6.2.14/src/redis-cli -h 192.168.14.121 -p 18001

查询key a

192.168.14.121:18001> get a

在这里插入图片描述
此时MOVED重定向告诉我们key a应该去192.168.14.123节点获取

./redis-6.2.14/src/redis-cli -h 192.168.14.123 -p 18003
192.168.14.123:18003> get a

在这里插入图片描述
(正常获取到数据)

3、测试(自动处理MOVED重定向)
在连接Redis时加上 -c 参数

-c Enable cluster mode (follow -ASK and -MOVED redirections).

cd /opt	
./redis-6.2.14/src/redis-cli -h 192.168.14.121 -p 18001 -c
###还是查询key a
192.168.14.121:18001> get a

在这里插入图片描述
直接帮我们重定向到key a 所在槽位的节点并返回数据。

此时可以总结出MOVED重定向的逻辑
在这里插入图片描述

同时还需要注意MOVED的核心原理

  • Redis客户端记录的是槽与Redis服务器的对应关系,不是key与服务器的关系

二、Redis重定向进阶篇

1、ASK重定向
Ask 重定向发生于 Redis 集群进行伸缩(扩容 / 缩容)时,由于此时会进行 Slot 槽迁移。当我们去源节点访问时,数据可能已经迁移到目标节点中。故此时需要借助 Ask 重定向来解决该问题。

为什么不能继续使用MOVED重定向?
因为Redis集群中槽的迁移的时候,是槽对应的多个Key分批次进行移动,不是一次性将某个槽内的key整体迁移,因此迁移的槽对应的Key,存在一部分在老的服务节点,一部分在新的服务节点。
所以当访问的Key正在发生迁移时,判断其位置需要比MOVED多一次判断
在这里插入图片描述

彩蛋

有一种画蛇添足的路子,让Redis的客户缓存Key的位置而不是槽的位置,这样在重定向的时候性能不是大大提升了?,好像是提升了,但是Redis本身也废了。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/20246.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么使用短链系统?

短链接(Short Link)是指将一个原始的长 URL(Uniform Resource Locator)通过特定的算法或服务转化为一个更短、易于记忆的 URL。短链接通常只包含几个字符,而原始的长 URL 可能会非常长。 短链接的原理非常简单&#x…

FPGA编程与PLC编程的区别:深入解析与对比

FPGA编程与PLC编程的区别:深入解析与对比 在工业自动化和控制系统领域,FPGA(现场可编程门阵列)编程和PLC(可编程逻辑控制器)编程都是关键的编程技术,但它们在应用、功能、结构和编程方法上存在…

IEEE编程语言排行榜:深度解析编程语言的四大维度、五大趋势、六大热门与七大挑战

IEEE编程语言排行榜:深度解析编程语言的四大维度、五大趋势、六大热门与七大挑战 在信息技术领域,编程语言排行榜一直是衡量各种编程语言流行度和影响力的重要指标。IEEE(电气电子工程师协会)作为全球最具影响力的科技专业组织之…

【Java数据结构】详解LinkedList与链表(二)

目录 1.❤️❤️前言~🥳🎉🎉🎉 2.反转一个单链表 3. 找到链表的中间节点 4.输入一个链表,输出该链表中倒数第k个结点。 5.合并两个有序链表 6.链表分割 7. 判定链表的回文结构 8.输入两个链表,找…

栈与队列练习题(2024/5/31)

1有效的括号 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的…

云服务和云备份的区别是什么?

随着云计算的兴起,云备份与云服务被越来越多的企业和个人所关注,在云计算中云服务与云备份之间还是有一定的区别的,本文就来介绍一下云服务和云备份之间的区别。 云服务和云备份主要的区别在备份对象、推荐场景和数据一致性等方面。 备份对象…

打印机的ip不同且连不上

打印机的ip不同且连不上 1.问题分析2.修改网段3.验证网络 1.问题分析 主要是打印机的网段和电脑不在同一个网段 2.修改网段 3.验证网络

Web前端三大主流框:React、Vue 和 Angular

在当今快速发展的 Web 开发领域,选择合适的前端框架对于项目的成功至关重要。React、Vue 和 Angular 作为三大主流前端框架,凭借其强大的功能和灵活的特性,赢得了众多开发者的青睐。本文将对这三大框架进行解析,帮助开发者了解它们…

dubbo复习:(12)服务器端的异步和客户端的异步调用

一、服务器端接口的定义和实现&#xff1a; package cn.edu.tju.service;import java.util.concurrent.CompletableFuture;public interface AsyncService {/*** 同步调用方法*/String invoke(String param);/*** 异步调用方法*/CompletableFuture<String> asyncInvoke(…

C/C++学习笔记 C读取文本文件

1、简述 要读取文本文件&#xff0c;需要按照以下步骤操作&#xff1a; 首先&#xff0c;使用该函数打开文本文件fopen()。其次&#xff0c;使用fgets()或fgetc()函数从文件中读取文本。第三&#xff0c;使用函数关闭文件fclose()。 2、每次从文件中读取一个字符 要从文本文…

整理一下win7系统java、python等各个可安装版本

最近使用win7系统&#xff0c;遇到了很多版本不兼容的问题&#xff0c;把我现在安装好的可使用的分享给大家 jdk 1.8 maven-3.9.6 centos 7 python 3.7.4 docker DockerToolbox-18.01.0-ce win10是直接一个docker软件&#xff0c;win7要安装这三个 datagrip-2020.2.3 d…

2.1Docker安装MySQL8.0

2.1 Docker安装MySQL8.0 1.拉取MySQL docker pull mysql:latest如&#xff1a;拉取MySQL8.0.33版本 docker pull mysql:8.0.332. 启动镜像 docker run -p 3307:3306 --name mysql8 -e MYSQL_ROOT_PASSWORDHgh75667% -d mysql:8.0.33-p 3307:3306 把mysql默认的3306端口映射…

CentOs-7.5 root密码忘记了,如何重置密码?

VWmare软件版本&#xff1a;VMware Workstation 16 Pro Centos系统版本&#xff1a;CentOS-7.5-x86 64-Minimal-1804 文章目录 问题描述如何解决&#xff1f; 问题描述 长时间没有使用Linux系统&#xff0c;root用户密码忘记了&#xff0c;登陆不上系统&#xff0c;如下图所示…

【网络安全】Web安全基础 - 第一节:使用软件及环境介绍

VMware VMware&#xff0c;是全球云基础架构和移动商务解决方案的佼佼者。 VMware可是一个总部位于美国加州帕洛阿尔托的计算机虚拟化软件研发与销售企业呢。简单来说&#xff0c;它就是通过提供虚拟化解决方案&#xff0c;让企业在数据中心改造和公有云整合业务上更加得心应…

QImage和QPixmap的区别和使用

一、基本概念和特点 QImage 概念&#xff1a;QImage是Qt库中用于处理图像数据的一个类。它提供了直接访问和操作图像像素的接口。特点&#xff1a; 可以独立于屏幕分辨率和设备处理图像。支持读取和保存多种图像格式&#xff0c;如PNG、JPEG、BMP等。可以在没有图形界面的情况…

图论第二天

最近加班时间又多了&#xff0c;随缘吧&#xff0c;干不动就辞呗。真是想歇几天了&#xff0c;题不能停&#xff01;&#xff01;今天目前只做了一道题&#xff0c;先用两种方式把他搞出来。 695. 岛屿的最大面积 class Solution { public:int neighbor[4][2] {1,0,0,-1,-1,…

Linux系统管理基础002

Linux系统管理基础之文件管理二 Linux文件管理是系统管理中的重要组成部分 1.文件与目录的基本概念 2. 特殊目录与文件 3. 文件与目录的操作 4. 文件权限管理 5. 查找处理文件 6. 关联技巧 今天给大家介绍一下目录的结构 1.文件与目录的基本概念 管理类目录&#xff1a; …

FreeRTOS基础(三):动态创建任务

上一篇博客&#xff0c;我们讲解了FreeRTOS中&#xff0c;我们讲解了创建任务和删除任务的API函数&#xff0c;那么这一讲&#xff0c;我们从实战出发&#xff0c;规范我们在FreeRTOS下的编码风格&#xff0c;掌握动态创建任务的编码风格&#xff0c;达到实战应用&#xff01; …

用贪心算法进行10进制整数转化为2进制数

十进制整数转二进制数用什么方法&#xff1f;网上一搜&#xff0c;大部分答案都是用短除法&#xff0c;也就是除2反向取余法。这种方法是最基本最常用的&#xff0c;但是计算步骤多&#xff0c;还容易出错&#xff0c;那么还有没有其他更好的方法吗&#xff1f; 一、短除反向取…

AdroitFisherman模块安装日志(2024/5/31)

安装指令 pip install AdroitFisherman-0.0.29.tar.gz -v 安装条件 1:Microsoft Visual Studio Build Tools 2:python 3.10.x 显示输出 Using pip 24.0 from C:\Users\12952\AppData\Local\Programs\Python\Python310\lib\site-packages\pip (python 3.10) Processing c:\u…