您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關codis有什么用的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
Codis 是一個分布式 Redis 解決方案, 對于上層的應用來說, 連接到Codis Proxy 和連接原生的 Redis Server 沒有明顯的區別 (不支持的命令列表), 上層應用可以像使用單機的 Redis 一樣使用, Codis 底層會處理請求的轉發, 不停機的數據遷移等工作, 所有后邊的一切事情, 對于前面的客戶端來說是透明的, 可以簡單的認為后邊連接的是一個內存無限大的 Redis 服務.
Codis 由四部分組成:
Codis Proxy (codis-proxy)
Codis Manager (codis-config)
Codis Redis (codis-server)
ZooKeeper
codis-proxy 是客戶端連接的 Redis 代理服務, codis-proxy 本身實現了 Redis 協議, 表現得和一個原生的Redis 沒什么區別 (就像 Twemproxy), 對于一個業務來說, 可以部署多個 codis-proxy, codis-proxy 本身是無狀態的.
codis-config 是Codis 的管理工具, 支持包括, 添加/刪除 Redis 節點, 添加/刪除 Proxy 節點, 發起數據遷移等操作. codis-config 本身還自帶了一個 http server, 會啟動一個 dashboard, 用戶可以直接在瀏覽器上觀察 Codis 集群的運行狀態.
codis-server 是Codis 項目維護的一個 Redis 分支, 基于 2.8.21 開發, 加入了 slot的支持和原子的數據遷移指令. Codis 上層的codis-proxy 和 codis-config 只能和這個版本的 Redis 交互才能正常運行.
Codis 依賴 ZooKeeper 來存放數據路由表和 codis-proxy 節點的元信息, codis-config 發起的命令都會通過 ZooKeeper 同步到各個存活的 codis-proxy.
Codis 支持按照Namespace 區分不同的產品, 擁有不同的product name 的產品, 各項配置都不會沖突.
安裝centos服務器3臺:192.168.92.136,192.168.92.138,192.168.92.138
192.168.92.136:2181
192.168.92.137:2181
192.168.92.138:2181
192.168.92.136:18078
192.168.92.137:19000
192.168.92.138:19000
192.168.92.137:7000、192.168.92.137:7001(主、從)
192.168.92.138:7000、192.168.92.138:7001(主、從)
下載地址:http://zookeeper.apache.org/releases.html
tar xf zookeeper-3.4.6.tar.gz -C /usr/local/
配置文件存放在$ZOOKEEPER_HOME/conf/目錄下,將zoo_sample.cfg文件名稱改為zoo.cfg
mv zoo_sample.cfg zoo.cfg
編輯zoo.cfg: vizoo.cfg,添加節點
server.1=192.168.92.136:2888:3888
server.2=192.168.92.137:2888:3888
server.3=192.168.92.138:2888:3888
修改data路徑:dataDir=/var/lib/zookeeper
在data路徑下添加myid文件,內容存放pid,與server.x一致
執行:./bin/zkServer.sh start
地址:http://golangtc.com/static/go/go1.4.2.linux-amd64.tar.gz
tar xf go1.4.2.linux-amd64.tar.gz -C/usr/local/
vi /etc/profile,添加如下
GOROOT=/usr/local/go
GOPATH=/usr/local/go/work
source /etc/profile
Development Tool,git
yum install -y “Development Tool
“
yum install –y git
go get -u-d github.com/wandoulabs/codis
cd $GOPATH/src/github.com/wandoulabs/codis
./bootstrap.sh
make gotest
修改zookeeper地址和dashboard地址:vi config.ini
每個proxy的proxy_id必須不同
mkdir log
./bin/codis-config-c config.ini -L ./log/dashboard.log dashboard &
./bin/codis-config -c config.ini slot init –f
啟動master:mkdir 7000
cp extern/redis-2.8.21/redis.conf 7000/
修改port、bind、maxmemory:vi 7000/redis.conf
啟動:./bin/codis-server 7000/redis.conf
啟動slave: mkdir 7001
cp extern/redis-2.8.21/redis.conf 7001/
修改port、bind、maxmemory:vi 7001/redis.conf
啟動:./bin/codis-server 7001/redis.conf
./bin/codis-config -cconfig.ini server add 1 192.168.92.137:7000 master
./bin/codis-config -c config.ini server add1 192.168.92.137:7001 slave
192.168.92.138節點啟動redis如上
./bin/codis-config -c config.ini slotrange-set 0 600 1 online
./bin/codis-config -c config.ini slotrange-set 601 1023 2 online
bin/codis-proxy -c config.ini -L ./log/proxy.log --cpu=1 --addr=0.0.0.0:19000--http-addr=0.0.0.0:11000 &
http://192.168.92.136:18087/admin/
將group_1的solt:599,600遷移到group_2
執行:bin/codis-config -c config.ini slot migrate 599 600 2 --delay=10
Codis 支持動態的根據實例內存, 自動對slot進行遷移, 以均衡數據分布.
要求:
所有的codis-server都必須設置了maxmemory參數
所有的 slots 都應該處于 online 狀態, 即沒有遷移任務正在執行
所有 server group 都必須有 Master
$ bin/codis-config slot rebalance
當一個group的master掛掉的時候,codis不會自動的將某個slave升級成master
該工具會在檢測到master掛掉的時候將其下線并選擇其中一個slave提升為master繼續提供服務
go get github.com/ngaut/codis-ha
cd /usr/local/go/work/src/github.com/ngaut/codis-ha
go build
./codis-ha--codis-config=192.168.92.136:18087 --productName=test &
使用循環調度策略方式多個proxy
<> <>com.wandoulabs.jodis</> <>jodis</> <>0.1.2</> </>
JedisResourcePool jedisPool = RoundRobinJedisPool(, 30000, , JedisPoolConfig()); (Jedis jedis = jedisPool.getResource()) { jedis.set(, ); String value = jedis.get(); System..println(value); }
Command Type | Command Name |
Keys | KEYS |
MIGRATE | |
MOVE | |
OBJECT | |
RANDOMKEY | |
RENAME | |
RENAMENX | |
SCAN | |
Strings | BITOP |
MSETNX | |
Lists | BLPOP |
BRPOP | |
BRPOPLPUSH | |
Pub/Sub | PSUBSCRIBE |
PUBLISH | |
PUNSUBSCRIBE | |
SUBSCRIBE | |
UNSUBSCRIBE | |
Transactions | DISCARD |
EXEC | |
MULTI | |
UNWATCH | |
WATCH | |
Scripting | SCRIPT |
Server | BGREWRITEAOF |
BGSAVE | |
CLIENT | |
CONFIG | |
DBSIZE | |
DEBUG | |
FLUSHALL | |
FLUSHDB | |
LASTSAVE | |
MONITOR | |
RESTORE | |
SAVE | |
SHUTDOWN | |
SLAVEOF | |
SLOWLOG | |
SYNC | |
TIME | |
Codis Slot | SLOTSCHECK |
SLOTSDEL | |
SLOTSINFO | |
SLOTSMGRTONE | |
SLOTSMGRTSLOT | |
SLOTSMGRTTAGONE | |
SLOTSMGRTTAGSLOT |
需要將以下key放入同一slot才能支持,方式采用{},如key為“bar{zap}”,則只會對zap進行hash
Command Type | Command Name |
Lists | RPOPLPUSH |
Sets | SDIFF |
SINTER | |
SINTERSTORE | |
SMOVE | |
SUNION | |
SUNIONSTORE | |
Sorted Sets | ZINTERSTORE |
ZUNIONSTORE | |
HyperLogLog | PFMERGE |
Scripting | EVAL |
EVALSHA |
1.修改config文件
dashboard_addr=192.168.92.136:19001
2.啟動命令變更為:
./bin/codis-config -cconfig.ini -L ./log/dashboard.log dashboard --addr=192.168.92.136:19001 &
感謝各位的閱讀!關于“codis有什么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。