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.pswp.cn/bicheng/20246.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/20246.shtml
英文地址,請注明出處:http://en.pswp.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…