IT技術互動交流平台

[個人翻譯]Redis 集群教程(中)

作者|--江淮愿景iii:lpxxn  來源-_助赢手机版:IT165收集  發布日期-|_移动彩票平台是真的吗:2016-12-22 20:36:24
上一篇_霍尔瓦特大街 txt:http://www.cnblogs.com/li-peng/p/6143709.html   官方原文地址|新浪亲子:https://redis.io/topics/cluster-tutorial    水平有限-爵迹小说一共有几部,如果您在閱讀過程中發現有翻譯的不合理的地方|__英国女主播直播中脱胸衣露乳出镜,請留言-医学基础知识,我會盡快修改_--朴载庆,謝謝_|kc2005。      使用create-cluster角本創建Redis集群      如果你不想通過配置來創建Redis集群並且不想向上邊闡明的一樣手動的去執行單獨的實例-投融贷网,這裏還有更簡單的係統(但是你將不會學到等量的操作細節)      隻需查看在Redis發行版本中的utils/create-cluster目錄-__阎玺。在裏麵有一個叫 create-cluster的角本(和包含他的目錄名稱一樣)_赢彩彩票靠谱么,為了啟動包含3個主節點和3個從節點的6節點集群|-|永盛彩票网是真的吗,隻需輸入下麵的命令_|-198彩票平台号:      1.create-cluster start      2.create-cluster create      在第2步當redis-trib實用工具程序想讓你接受集群的布局時答複為yes.      現在你可以和你的集群進行交互了_|-369彩票官网,第一個節點將默認使用30001端口啟動|_|陈道旺。當你操作完後---盈彩彩票登录网址,使用下麵的命令停止集群--01彩票官网蓝色版:      1.create-cluster stop      請閱讀此目錄內的README文件|-_ebase官网,以獲得有關如何運行角本的更多信息-||15分分彩计划。            和集群玩耍      在這個階段Redis集群有一個問題是缺少客戶端庫實現|_|游彩网平台。      下麵是我知道的實現_|_陈奕迅老婆照片:      > redis-rb-cluster是我(@antirez)用Ruby實現的||结婚照要求,做為其它語言的參考|__政府最新打击云联惠。這是圍繞原始的redis-rb的簡單包裝|-360彩票苹果客户端,高效實現了和集群通信的最小語義|||qq 空间克隆。      > redis-py-clusterredis-rb-cluster的Python移植版本--_陈云儿子陈方,支持redis-py的絕大部分功能-银行卡手机充值号码。還處於積極開發中|跑狼电动车报价。      > 流行的  Predis現在也支持Redis集群__01彩票官方版,該支持最近剛更新過_|-根据短号查长号,並且還在積極開發中_阿克苏诺贝尔 待遇。      > 使用最多的java客戶端-_0369公式是什么意思, Jedis最近新增了對Redis集群的支持_|-078彩票正规吗,在項目README裏查看 Jedis Cluster 章節-_|2019年122期精准五肖。      > StackExchange.Redis 提供對C#的支持(並且適用於大多數.NET語言; VB, F#等)      > redis-go-cluster 提供對Node.js和io.js的支持||银彩注册网址,它是基於thunk/promise的redis客戶端並含有管道和集群|_-纳雪莱。      > redis-go-cluster是使用 Redigo library client做為基本客戶端的Go語言的Redis集群實現|-山阳县地图,通過結果聚合實現MGET/MSET|_-虚拟定位安卓。      > 在GitHub上Redis unstable分支內的redis-cli實用工具在使用-c開關啟動時實現了最基本的集群支持__-苏州日报电子版。      測試Redis集群 最簡單的方式是嚐試使用上述任意一種客戶端|_|加菲网,或者隻是redis-cli命令行工具_-_诛仙国家宝藏拼图。      下麵是使用redis-cli的交互示例_-观澜田背花园:
$ redis-cli -c -p 7000
redis 127.0.0.1:7000> set foo bar
-> Redirected to slot [12182] located at 127.0.0.1:7002
OK
redis 127.0.0.1:7002> set hello world
-> Redirected to slot [866] located at 127.0.0.1:7000
OK
redis 127.0.0.1:7000> get foo
-> Redirected to slot [12182] located at 127.0.0.1:7002
'bar'
redis 127.0.0.1:7000> get hello
-> Redirected to slot [866] located at 127.0.0.1:7000
'world'
       注意|_2628彩票平台登录链接:如果你使用角本創建的集群-康熙来了20111201,你的節點可能監聽不同的端口_106时时彩票,默認情況下從30001開始-_金条树。      redis-cli對集群的支持是非常基本的_|_11选5彩票选号神器,所以他總是使用Redis集群節點將客戶端重定向一個到正確節點_||易彩彩票可靠吗。一個完善的客戶端可以做的更好-|_125摩托车改装,並且緩存hash槽和節點地址的映射||镶嵌栏开启装置,用於直接使用正確的連接到正確的節點|阿克苏教育局。這個映射隻有在集群配置有變動時才會被刷新-35彩票35cpcc,例如故障轉移之後或者係統管理員通過地址修改集群層或移除節點之後_|-369开奖网时时彩。      編寫一個redis-rb-cluster實例程序      在展示如何操作redis集群_立冬立秋诗句,像這些執行故障轉移-|长虹手机解锁,或者重新分片(resharding)之前|菊丸英二bg, 我們需要創建一些示例程序_||氰化钠价格,至少能明白簡單的Redis集群客戶端交互語義|_|交大晨光bt。      這樣我們可以運行一個示例同時嚐試讓節點發生故障|-至尊彩的网址是多少,或者開始重新分片(resharding)||-铁手无语,以了解在真實環境中Redis集群的行為-__情侣号名字。這對於了解當集群沒有寫入命令時發生了什麼不是非常有幫助___持阳伞的女人。      本節使用兩個示例來解釋redis-rb-cluster的基本用法_-固件不兼容。下麵是第一個_感人的电影推荐,它是redis-rb-cluster發行版本內的example.rb文件_|_360彩票杀号定胆走势图。        
 1  require './cluster'
   2
   3  if ARGV.length != 2
   4      startup_nodes = [
   5          {:host => '127.0.0.1', :port => 7000},
   6          {:host => '127.0.0.1', :port => 7001}
   7      ]
   8  else
   9      startup_nodes = [
  10          {:host => ARGV[0], :port => ARGV[1].to_i}
  11      ]
  12  end
  13
  14  rc = RedisCluster.new(startup_nodes,32,:timeout => 0.1)
  15
  16  last = false
  17
  18  while not last
  19      begin
  20          last = rc.get('__last__')
  21          last = 0 if !last
  22      rescue => e
  23          puts 'error #{e.to_s}'
  24          sleep 1
  25      end
  26  end
  27
  28  ((last.to_i+1)..1000000000).each{|x|
  29      begin
  30          rc.set('foo#{x}',x)
  31          puts rc.get('foo#{x}')
  32          rc.set('__last__',x)
  33      rescue => e
  34          puts 'error #{e.to_s}'
  35      end
  36      sleep 0.1
  37  }
     這個程序做了非常簡單的事情|最新理财产品,他以foo<number>的形式|_-143期双色球开奖啦,一個接一個的設置鍵值為number-网上三好街报价,所以如果你運行這個程序它的結果是下麵的命令流-|_消防概念股:      SET foo0 0      SET foo1 1      SET foo2 2      And so forth...        這個程序看起來比通常應用更複雜-焦煤上市公司,因為他被設計為在屏幕上顯示錯誤信息_|2019十二生肖开奖走势,而不是發生異常退出-_|2m永久免费开奖,所以每一個與集群執行的操作都被包在begin recue塊中||爱家乡的诗歌。      在程序中第14行代碼是第一處有意思的地方-|369彩票官网注册,他創建了Redis集群對象_苏州寒山寺门票价格,使用啟動節點(startup nodes )列表作為參數--广州莲香楼,允許連接這個對象對應不同節點的最大數量-qq2009官方下载正式版,最後在給定的操作超後被認為故障 -__育儿大全 日本。      啟動節點不需要集群內的所有節點-金宝街百丽宫。重要的是至少有一個節點是可訪問的||-530u3b。注意隻要redis-rb-cluster能連接到一個節點就會更新啟動列表---愤世哥。你應該期待其他嚴格的客戶端也有這樣的行為-|qq2009精简版。      現在我們已經有Redis集群對象的實例保存在rc變量中___深圳特色小吃,我們準備好象使用一般的redis對象實例一樣使用這個對象|-|静安工人体育场。      這是確實發生在 18 到 26行-|_雪在飞:當我們重啟個這示例-金手指v6,麵不想重新從foo0開始_|_深圳都市频道第一现场直播,所以我們把這個計數保存在Redis內_--长沙王府井电影院。上麵的代碼被設計為讀取這個計數器|-柏原崇 佟丽娅,或者如果這個計數器不存在_-197彩票,就設置為0.      然而注意他是一個怎樣的while循環-078彩票计划群,由於我們想一次又一次的嚐試||_www hzxxt com,即使集群已關閉並且返回錯誤--永城彩票官网。不般的應用程序不需要這麼小心-|钩子船长。      28到37行開始主要的的循環|||q币购物券有什么用,循環裏設置鍵值或者顯示錯誤信息--|兰州商学院长青学院教务管理系统。      注意在循環的最後調用了sleep_|运城美食。在你的測試中如果你想寫入到集群的速度足夠快那就把sleep去掉(相對於快這裏隻是一個頻繁的循環|||下载qq2011,當然不是真正的並發||注册会员免费送彩金,這樣在最好的狀態下|-|04年双色球事件,你通常會得到10k ops/s)-_-京津高铁二线。      一般情況下對於示例程序能容易的被人類跟隨會把寫入速度放慢|-|cf修复工具。      開始這個應用程序後就產生下麵的輸出-|-mc擦皮鞋歌词:
ruby ./example.rb
1
2
3
4
5
6
7
8
9
^C (I stopped the program here)
     這不是一個非常有趣的程序__苍井空视频无码看,我們一會兒會使用一個更好的|-诺基亚500万像素,但是我們已經可以看到在程序運行起來後在分片期間發生了什麼||veor moda。   集群的重新分片(Resharding)      現在我們準備嚐試集群的重新分片_|-出不去气死你。為此需要example.rb程序保持運行-|嘉洲服务器,因此可以看到是否對程序運行過程中有影響-|克隆空间下载。同樣的在分片期間為了更嚴格的寫入負載你可能可能想注釋掉sleep調用|||兔斯基表情图片。      重新分片基本上意味著把哈希槽 從一組節點移動到另一組節點---运盛彩票吧,就像使用redis-trib實用工具完成集群的創建一樣_-花境设计说明。      隻需輸入下麵的代碼就可以開始重新分片|亿博国际娱乐: 
./redis-trib.rb reshard 127.0.0.1:7000
     你唯一需要做的就是指定一個節點||瑞雪胶囊,redis-trib會自動的找到其他的節點|阿姆斯特丹机场购物。      一般情況下需要管理員的支持reids-trib才能重新分片,你不能說隻從這個節點移動槽的5%到其它節點(但是這是很空間實現的)-|_女烈集中营。所以從詢問開始-__盈盈彩官网注册。第一是你想要做多大的分片_-_魏征进谏图:
How many slots do you want to move (from 1 to 16384)?

     我們可以嚐試對1000個哈希槽分片_-|宋祖德近况,如果示例依然在不調用sleep的情況下運行__|应用文写作学习总结,那麼它已經包含了一些重要的鍵|_-国家副主席有几个。

     這時||善淘网,redis-trib需要知道分片的目標什麼是 |||端午节活动策划方案。也就是說將要接收哈希槽的節點-|-长江大桥有多长。我將使用第一個主節點_|_门铃音效,也就是127.0.0.1-|_无锡排骨是什么地方的菜:7000|-尊彩可信吗,但是我需要指定實例的節點ID_2019年第123期开奖结果。通過redis-trib已經在一個列表內打印出來了|_-188网彩,但是如果需要我經常使用下麵的命令來找節點的ID|-3a录取查询:
$ redis-cli -p 7000 cluster nodes | grep myself
97a3a64667477371c4479320d683e4c8db5858b1 :0 myself,master - 0 0 0 connected 0-5460

     ok所以我們的目標節點是 97a3a64667477371c4479320d683e4c8db5858b1.

     現在你會得到一個詢問你想從哪些節點來取這些鍵--金鼎轩团购,為了能從其它所有的主節點取出一些哈希槽我隻需輸入all.      在最後的配置後_|无碟机,你會看到每一個redis-trib要從一個節點移動到另一個節點的槽的信息|matlab6 5下载,並且會為每一個從一個節點移動到另一個節點的實際的鍵打印一個點_-|金立l7。      在分片過程中你會看到對你運行中的示例是沒有影響的--北京男性科建国医院。在分片期間_11086移动彩票靠谱吗,隻要你想|功夫小帅,你可以多次停止或重啟你的示例程序 -_-碣石佳俊车行。      分片結束後--至尊彩app网站,你可以使用下麵的命令來測試集群的健康-|_038com彩票官方版:      通常將覆蓋所有的槽-|305彩票软件,但這些主節點127.0.0.1|360彩票今日开奖公告:7000 將有更多的哈希槽_-钻石小鸟团购,大約為6461.      

延伸閱讀_|卓易彩票出现暂停服务:

Tag標簽--_反间谍工作的主管单位: 集群   教程   個人  
  • 專題推薦

  • Directx11 遊戲編程入門教程
  • 專題主要學習DirectX的初級編程入門學習--|五菱双排加长小货车,對Directx11的入門及初學者有...... 詳細
  • Windows7係統入門 優化 技巧技術專題
  • Windows7係統專題 無論是升級操作係統-|广州公安金盾网、資料備份_|35彩票黑钱、加強資料的安全及管...... 詳細
About IT165 - 廣告服務 - 隱私聲明 - 版權申明 - 免責條款 - 網站地圖 - 網友投稿 - 聯係方式
本站內容來自於互聯網,僅供用於網絡技術學習,學習中請遵循相關法律法規
v8彩票宝马彩票9号彩票腾讯分分彩幸运飞艇秒速时时彩

免责声明: 本站资料及图片来源互联网文章,本网不承担任何由内容信息所引起的争议和法律责任。所有作品版权归原创作者所有,与本站立场无关,如用户分享不慎侵犯了您的权益,请联系我们告知,我们将做删除处理!