中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Redis請求路由的示例分析

發布時間:2021-11-16 11:54:01 來源:億速云 閱讀:131 作者:小新 欄目:大數據

這篇文章主要介紹Redis請求路由的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

請求重定向

既然是重定向我們就應該了解,重定向指的是通過某種方法將原來的請求重新轉向其它的地方,那么Redis中的重定向指的到底是什么呢?我們知道Redis中的任何鍵都存儲到槽中,而通過上幾篇文章中我們知道在Redis集群環境中,槽被均勻的分布到多個主節點中了,所以在我們執行任何Redis命令時,和單節點有很大的不同,因為集群環境首先要計算鍵對應的槽,再根據槽找出相應的節點。如果計算之后,當前鍵所在的槽是當前節點,那么就直接處理該命令,如果計算完后,不是當前節點,則Redis會顯示MOVED重定向錯誤,也就是告訴客戶端該鍵所對應槽的正確節點是多少。這個就叫做Redis的重定向。下面我們演示一下上述所說的內容。


下面我們啟動一個新節點6387。因為該節點沒有添加到集群中,所以我們執行set命令時,可以直接返回成功。

Redis請求路由的示例分析

下面我們在集群中執行同樣的命令。

Redis請求路由的示例分析

我們看在集群環境中執行同樣的命令時,Redis提示了MOVED錯誤。原因也就是上述介紹中的那樣。下面我們看一下MOVED重定向的執行流程。也就是如下圖所示:

Redis請求路由的示例分析

在Redis中我們可以使用cluster keyslot {key}命令查看key所對應的槽,然后在通過cluster nodes命令查看每個節點負責的槽,這樣我們就可以在執行命令的時候,就可以知道在哪個節點上執行了。我還還是已上圖的key為例。具體操作如下圖所示:

Redis請求路由的示例分析

我們用cluster keyslot {key}命令查看鍵所在的槽是12691。然后我們通過cluster nodes命令知道節點6382負責的槽為12288-16383。所以我們在執行命令時,只有在6382節點上執行才能成功,在其它節點上執行Redis都會報MOVED重定向錯誤。下面我們將上述執行失敗的命令在6382節點執行。

Redis請求路由的示例分析

在Redis中我們使用redis-cli執行命令時,我們可以添加-c參數,該參數會自動重定向,簡化我們手動重定向操作。

Redis請求路由的示例分析

鍵命令執行主要分兩個步驟:計算槽,查找槽所在的節點。下面我們詳細介紹一下這兩方面的內容。

計算槽

Redis根據鍵的使用CRC16函數計算鍵的散列值,然后在用散列值對16383取余,這樣使每個鍵都可以映射到0-16383槽范圍內。

槽節點查找

Redis計算得到鍵所對應的槽后,需要查找槽所在的節點。集群內通過消息交換每個節點都會知道所有節點的槽的信息。根據MOVED重定向機制,客戶端可以隨機連接集群內的任意Redis獲取鍵的所在節點,這種客戶端叫做傀儡客戶端,它的優點是代碼實現簡單,對客戶端協議影響比較小,只需要根據重定向信息再次發送請求即可。但這樣也有它的弊端,也就是每次執行鍵命令前都要到Redis上進行重定向才能找到要執行命令的節點。這樣就額外的增加了IO開銷。正是因為這樣的弊端所以Redis提供了另一種技術實現,也叫Smart(智能)客戶端,在下一篇中,我們在介紹Smart相關的內容。

以上是“Redis請求路由的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

商南县| 永嘉县| 黄山市| 五原县| 南乐县| 巫山县| 横峰县| 昆山市| 邵武市| 隆尧县| 南投市| 琼结县| 兴安县| 阿拉善左旗| 航空| 望谟县| 盐亭县| 沙坪坝区| 望城县| 龙里县| 吴江市| 永城市| 岑巩县| 方山县| 沂南县| 昂仁县| 施秉县| 阳朔县| 鹤峰县| 桦川县| 永安市| 江陵县| 呼伦贝尔市| 柘城县| 霍山县| 绥中县| 塔河县| 巴林右旗| 海城市| 蓬溪县| 武城县|