<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        RedisCluster簡單配置與動態擴容

        來源:懂視網 責編:小采 時間:2020-11-09 13:03:47
        文檔

        RedisCluster簡單配置與動態擴容

        RedisCluster簡單配置與動態擴容:Redis 3.0 就要自帶集群功能了, 去看了一下這里還有官方教程之后, 發現似乎必須用命令行來搞著, 而且官方提供的 redis-trib.rb 要求至少 3 個節點才能建立一個集群, 這規格是向黨支部看齊么... 至少 3 個節點這個還是略坑, 而且不能自動添加節點 (難道要
        推薦度:
        導讀RedisCluster簡單配置與動態擴容:Redis 3.0 就要自帶集群功能了, 去看了一下這里還有官方教程之后, 發現似乎必須用命令行來搞著, 而且官方提供的 redis-trib.rb 要求至少 3 個節點才能建立一個集群, 這規格是向黨支部看齊么... 至少 3 個節點這個還是略坑, 而且不能自動添加節點 (難道要

        Redis 3.0 就要自帶集群功能了, 去看了一下這里還有官方教程之后, 發現似乎必須用命令行來搞著, 而且官方提供的 redis-trib.rb 要求至少 3 個節點才能建立一個集群, 這規格是向黨支部看齊么... 至少 3 個節點這個還是略坑, 而且不能自動添加節點 (難道要我啟

        Redis 3.0 就要自帶集群功能了, 去看了一下這里還有官方教程之后, 發現似乎必須用命令行來搞著, 而且官方提供的 redis-trib.rb 要求至少 3 個節點才能建立一個集群, 這規格是向黨支部看齊么...
        至少 3 個節點這個還是略坑, 而且不能自動添加節點 (難道要我啟動個 py 的 subprocess 去掉 ruby?), 于是去看看源代碼, 驚訝地發現, 原來限制 3 個節點起步的是 ruby 腳本, 而且調集群加節點平衡負載其實都可以用 redis 命令來完成. 好吧, 那我自己來連 socket 搞總行了吧.
        結果一番折騰還真的可行的樣子, 于是有了這篇文章和一個簡單的工具. 那么首先說說怎么用 redis-cli 來做這些事情.

        如何在 redis-cli 手動啟動集群呢, 請隨意連上一個空的支持集群模式的節點, 然后執行

        cluster addslots 0 1 2 ... 16383

        千萬不要誤會了, 中間那個 ... 可是要實打實地從頭寫到尾的哦. 所以如果可以的話, 手動寫個腳本來干這事情吧.
        不過也可以略過這些步驟, 反正下面看看例子就行, 最后會給出一個 Python 工具來做這些.
        接下來的例子中, 假定已經開好了一個集群, 共有 3 個 master 節點. 要在控制臺檢視這些節點, 請用 redis-cli 隨意連上其中一個, 并執行

        cluster nodes

        輸出

        e7f4fcc0dd003fc107333a4132a471ad306d5513 127.0.0.1:8001 master - 0 1414033928009 3 connected 0-2729 8192-10921
        bd239f7dbeaba9541586a708484cdce0ca99aba5 127.0.0.1:8000 master - 0 1414033929011 2 connected 2730-8191
        787e06e9d96e6a9a3d02c7f3ec14e243882293e9 127.0.0.1:7999 myself,master - 0 0 1 connected 10922-16383

        以上每一行是一個節點信息, 按空格分隔的域依次表示
      1. 節點 ID
      2. 節點地址
      3. 節點角色 (master / slave), 如果是當前節點, 還會有個 myself
      4. 對于 slave 而言, 其 master 節點的 ID
      5. 最后一次 ping 時間戳
      6. 最后一次 pong 時間戳
      7. 節點順序號
      8. 節點連接狀態
      9. 之后的所有 : 節點所配給的槽位, 如果槽位連續, 就以 BEGIN-END 表示, 不連續的由空格隔開
      10. 如果要向集群新增一個節點, 需要用 redis-cli 連上這個新節點, 調用一次 cluster meet 命令. 如

        cluster meet 127.0.0.1 7999

        后面參數是已經在集群中的節點中任意一個節點的地址及端口. 然后再來一次

        e7f4fcc0dd003fc107333a4132a471ad306d5513 127.0.0.1:8001 master - 0 1414034715486 3 connected 0-2729 8192-10921
        bd239f7dbeaba9541586a708484cdce0ca99aba5 127.0.0.1:8000 master - 0 1414034714983 2 connected 2730-8191
        787e06e9d96e6a9a3d02c7f3ec14e243882293e9 127.0.0.1:7999 master - 0 1414034714482 1 connected 10922-16383
        a0fa298711f5da94cb8acc0ed913970f7b00c7af 127.0.0.1:8010 myself,master - 0 0 0 connected

        就會發現這個節點已經加入集群, 但是沒有被分配任何槽位. 現在得從原來幾個節點搬運一些過來. 在執行這個操作前, 為了測試, 先向集群里扔一個值進去

        set "foo14308" "bar"

        這個鍵對應的槽位是 7 號. 等會兒就嘗試將 7 號槽移動到新節點上.

        第一步, 鎖定槽位. 這個操作需要分開進行. 首先用 redis-cli 連上新節點 (上述例子中端口 8010 的那個) 并執行

        cluster setslot 7 importing e7f4fcc0dd003fc107333a4132a471ad306d5513

        這表示即將從 ID 為 e7f4fcc0dd003fc107333a4132a471ad306d5513 的節點 (也就是 7 號槽位的所有者) 導入 7 號槽.
        接下來連上 7 號槽位的所有者所在的 8001 端口, 執行

        cluster setslot 7 migrating a0fa298711f5da94cb8acc0ed913970f7b00c7af

        再執行

        cluster getkeysinslot 7 10

        查看 7 號槽位的全部鍵 (參數 7 表示槽位, 參數 10 表示數量). 這樣 redis 會回顯剛才放進去的 "foo14308".
        現在開始手動遷移這些鍵. 在 8001 端口的客戶端上執行

        migrate 127.0.0.1 8010 foo14308 0 15000

        (最后兩個參數, 其實我也不知道什么意思, 從 官方代碼里 抄過來的)
        因為只有這一個鍵, 所以現在整個槽的遷移已經完成了, 需要告知整個集群 7 號槽位已經被新節點承包了, 官方源碼里 這里進行了廣播, 在命令行里的話似乎需要逐個連接節點, 執行以下命令

        cluster setslot 7 node a0fa298711f5da94cb8acc0ed913970f7b00c7af

        搞完就好了.

        在知道以上這些的基礎上, 做了一個簡單的集群小工具, 能夠在單節點上啟動集群, 以及將一個新節點加入集群中并且自動平衡槽位. 此 Python 工具已加入 GitHub, 歡迎大家拍磚.

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        RedisCluster簡單配置與動態擴容

        RedisCluster簡單配置與動態擴容:Redis 3.0 就要自帶集群功能了, 去看了一下這里還有官方教程之后, 發現似乎必須用命令行來搞著, 而且官方提供的 redis-trib.rb 要求至少 3 個節點才能建立一個集群, 這規格是向黨支部看齊么... 至少 3 個節點這個還是略坑, 而且不能自動添加節點 (難道要
        推薦度:
        標簽: 動態 簡單 擴容
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 色偷偷噜噜噜亚洲男人| 在线亚洲午夜理论AV大片| 亚洲一区二区影院| 久久久国产精品福利免费| 日韩一卡2卡3卡4卡新区亚洲| 一级毛片a免费播放王色电影| 伊在人亚洲香蕉精品区麻豆| 在线观看日本免费a∨视频| 亚洲av午夜成人片精品网站 | 999在线视频精品免费播放观看| 久久久久亚洲av无码专区蜜芽| 亚洲色丰满少妇高潮18p| 国产在线观看免费视频软件| 国产亚洲精品美女久久久| 亚洲人成网站18禁止| 女人被男人桶得好爽免费视频| 亚洲精品福利你懂| 在线观看国产情趣免费视频| 亚洲人成在线影院| 我们的2018在线观看免费高清| 国产精品亚洲综合久久 | 免费无码黄网站在线看| 无码久久精品国产亚洲Av影片| 国内精自视频品线六区免费| 亚洲欧美成aⅴ人在线观看| 亚洲高清免费视频| 污污网站18禁在线永久免费观看| 免费乱理伦在线播放| 国产日韩在线视频免费播放| 亚洲国产精品婷婷久久| 18禁无遮挡无码网站免费| 真人无码作爱免费视频| 亚洲人成中文字幕在线观看| 污视频网站免费观看| 免费高清在线影片一区| 国产精品99爱免费视频| 亚洲资源在线视频| 97av免费视频| 亚洲国产香蕉碰碰人人| 白白国产永久免费视频| 99在线免费视频|