搜尋

首頁  >  問答  >  主體

redis資料庫把它分散到兩台機器

我有一個4G的redis數據庫,現在已經存在,我想要把它分散到兩台機器,一台機器2G,該怎麼做?

看了一下redis cluster,都是講單點失敗,主從複製,這個不是我的需求。

sf的redis服務器是多大的內存?

阿神阿神2798 天前680

全部回覆(6)我來回復

  • 大家讲道理

    大家讲道理2017-04-21 10:59:02

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

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

    希望對你有幫助。

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-21 10:59:02

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

    回覆
    0
  • 大家讲道理

    大家讲道理2017-04-21 10:59:02

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

    回覆
    0
  • PHPz

    PHPz2017-04-21 10:59:02

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

    回覆
    0
  • 怪我咯

    怪我咯2017-04-21 10:59:02

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

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-21 10:59:02

    如果你是用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

    回覆
    0
  • 取消回覆