<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
        主站蜘蛛池模板: 亚洲中文字幕无码一区 | 国产麻豆免费观看91| 国产精品成人69XXX免费视频| 一级毛片在线免费播放| a毛片免费在线观看| 久久久久久国产精品免费免费男同 | 在线观看亚洲AV每日更新无码| 亚洲熟女综合色一区二区三区| 国产精品爱啪在线线免费观看| 在线观看91精品国产不卡免费| 国产AV旡码专区亚洲AV苍井空| 9久热精品免费观看视频| 成年在线观看网站免费| 国产亚洲AV手机在线观看| 国产成人精品免费大全| 亚洲啪啪综合AV一区| 丰满亚洲大尺度无码无码专线| 国产在线精品观看免费观看| 免费一本色道久久一区| 国产亚洲福利精品一区| 亚洲国产AV一区二区三区四区| 日韩免费观看一区| 亚洲人成在线播放网站| 亚欧免费无码aⅴ在线观看| 亚洲日本香蕉视频观看视频| 成在线人视频免费视频| 亚洲av福利无码无一区二区| 夜夜爽妓女8888视频免费观看| 成人在线免费观看| 亚洲午夜国产精品无卡| 无码国产精品一区二区免费vr| 亚洲视频免费一区| 久久青草91免费观看| 亚洲va精品中文字幕| 国内精品免费麻豆网站91麻豆| 亚洲人成色777777精品| 西西大胆无码视频免费| 免费无遮挡无码视频在线观看| 日韩免费视频播放| 精品一区二区三区免费| 国产亚洲成av人片在线观看|