redis数据库把它分散到两台机器
阿神
阿神 2017-04-21 10:57:02
0
6
629

我有一个4G的redis数据库,现在已经存在,我想要把它分散到两台机器,一台机器2G,该怎么做?

看了一下redis cluster,都是讲单点失败,主从复制,这个不是我的需求。

sf的redis服务器是多大的内存?

阿神
阿神

闭关修行中......

全部回覆 (6)
大家讲道理

不太確定你在用什麼客戶端,不同的客戶端有 distributed 的最基本實現,但是這些都是客戶端實現,在增加刪除節點時需要你自己重新算 hash 遷移資料。 Redis 3 會有服務端的支持,就會簡單很多了。

基本上目前的客戶端實作都是基於@TechAd 說的consistent hashing,例如ruby 用戶端就有Redis::Distributed 可以用,你的需求把4G 資料分到兩台機器也很簡單,已經有https:/ /github.com/yankov/redis-migra... 可以直接用,看下實現,其實也很簡單。

希望對你有幫助。

    巴扎黑

    推薦你搜搜一致性哈希的相關演算法,大體思路是,在客戶端做一個路由,對key做一個hash,然後mod 2, 分別將key-value存儲到0, 1兩台機器上去,讀取的時候也是這樣。可以參考memcache的,給你一個參考連結http://blogread.cn/it/article/5271

      大家讲道理

      可以使用3L的做法,或者最直接的辦法就是在業務層把資料分開,寫在配置裡面就可以了,這樣以後在拆分的時候會很方便,邏輯也簡單,如果真的需要做分佈式,建議使用mongoDB

        PHPzhong

        如果你不需要pepline的話推薦使用https://github.com/twitter/twemproxy Twitter退出的代理,自動hash,故障自動切換

          刘奇

          問一下,twemproxy是不是不支援主備自動切換?

            巴扎黑

            如果你是用redis cluster來做這個資料遷移的話,可以看看其官方的介紹:
            假設您將預先存在的資料集拆分為 N 個主節點,如果沒有預先存在的分片,則 N=1,則需要執行下列步驟才能將資料集遷移到 Redis 叢集:
            阻止你的客戶。目前無法自動即時遷移到 Redis 叢集。您也許能夠在您的應用程式/環境的上下文中編排即時遷移。
            使用 BGREWRITEAOF 指令為所有 N 個 master 產生一個僅附加文件,並等待 AOF 檔案完全產生。
            將 AOF 檔案從 aof-1 儲存到 aof-N 某處。此時,如果您願意,您可以停止舊實例(這很有用,因為在非虛擬化部署中您經常需要重複使用相同的電腦)。
            建立一個由N個master和0個slave組成的Redis叢集。您稍後將添加奴隸。確保所有節點都使用僅附加檔案來實現持久性。
            停止所有叢集節點,用您預先存在的僅附加檔案取代它們的僅附加文件,第一個節點為 aof-1,第二個節點為 aof-2,最多為 aof-N。
            使用新的 AOF 檔案重新啟動 Redis 叢集節點。他們會抱怨有些鑰匙根據他們的配置不應該在那裡。
            使用 redis-trib fix 指令來修復集群,以便根據每個節點是否權威的雜湊槽來遷移金鑰。
            最後使用 redis-trib 檢查以確保您的叢集正常。
            重新啟動修改為使用 Redis 叢集感知客戶端庫的客戶端。 w

              最新下載
              更多>
              網站特效
              網站源碼
              網站素材
              前端模板
              關於我們 免責聲明 Sitemap
              PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!