84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
我有一个4G的redis数据库,现在已经存在,我想要把它分散到两台机器,一台机器2G,该怎么做?
看了一下redis cluster,都是讲单点失败,主从复制,这个不是我的需求。
sf的redis服务器是多大的内存?
闭关修行中......
不太確定你在用什麼客戶端,不同的客戶端有 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
如果你不需要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
不太確定你在用什麼客戶端,不同的客戶端有 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
如果你不需要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