codis是豌豆莢使用go和c語言開發、以代理的方式實作的一個redis分布式叢集解決方案,且完全相容twemproxy。twemproxy對于上一層的應用來說, 連接配接codis proxy(redis代理服務)和連接配接原生的redis伺服器沒有明顯的差別,上一層應用能夠像使用單機的 redis一樣對待。codis底層會處理請求的轉發、不停機的資料遷移等工作, 所有底層的一切處理, 對于用戶端來說是透明的。總之,可以簡單的認為背景連接配接的是一個記憶體無限大的redis服務。codis遵循mit開源協定釋出,更多關于codis的資訊請登入其在github的首頁檢視。
codis 是一個分布式 redis 解決方案, 對于上層的應用來說, 連接配接到 codis proxy 和連接配接原生的 redis server 沒有明顯的差別 (不支援的指令清單), 上層應用可以像使用單機的 redis 一樣使用, codis 底層會處理請求的轉發, 不停機的資料遷移等工作, 所有後邊的一切事情, 對于前面的用戶端來說是透明的, 可以簡單的認為後邊連接配接的是一個記憶體無限大的 redis 服務.
codis 由四部分組成:
codis proxy (codis-proxy)
codis manager (codis-config)
codis redis (codis-server)
zookeeper
架構圖:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIzMzM2IDM1YTM2AzMwUTMwIzLcRXZu5ibkN3Yuc2bsJmLn1Wavw1LcpDc0RHaiojIsJye.jpg)
項目位址:
<a href="https://github.com/wandoulabs/codis">https://github.com/wandoulabs/codis</a>
中文說明文檔:
<a href="https://github.com/wandoulabs/codis/blob/master/doc/tutorial_zh.md">https://github.com/wandoulabs/codis/blob/master/doc/tutorial_zh.md</a>
redis 開源叢集方案:
<a href="http://www.infoq.com/cn/news/2014/11/open-source-redis-cache">http://www.infoq.com/cn/news/2014/11/open-source-redis-cache</a>
redis 3.0 rc4已經釋出了,也是一種方案可以研究下,線上系統不建議使用。
參考文檔:
<a href="https://github.com/wandoulabs/codis/blob/master/doc/tutorial_zh.md#build-codis-proxy--codis-config">https://github.com/wandoulabs/codis/blob/master/doc/tutorial_zh.md#build-codis-proxy–codis-config</a>
設定環境變量,vi /etc/profile
下載下傳codis
安裝codis,需要下載下傳依賴包。比較慢,依賴
安裝測試成功,就可以配置了。
編譯後的二進制檔案在/usr/local/codis/bin目錄下面。
啟動codis之前需要安裝zookeeper。
安裝目錄/usr/local/zookeeper
vi /usr/local/zookeeper/conf/zoo.cfg配置檔案
啟動zookeeper
啟動codis服務,之前必須啟動zookeeper,sample目錄有簡單的叢集配置。
startall.sh腳本會同時将redis啟動。
啟動之後就可以看到zookeeper裡面的資料了。
啟動之後就可以通路admin頁面了。
資料遷移界面
整個桶結構
codis可以完美的解決redis叢集問題,在目前redis 3.0版本還不是很穩定的情況下,是非常不錯的解決方案。支援資料擴充。
但是并不是所有的redis指令都支援。
如果你使用以下指令:
是無法直接遷移到 codis 上的. 你需要修改你的代碼, 用其他的方式實作.