日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Codis集群的搭建与使用

發(fā)布時間:2025/3/14 编程问答 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Codis集群的搭建与使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、簡介??

Codis是一個分布式的Redis解決方案,對于上層的應用來說,連接Codis Proxy和連接原生的Redis Server沒有明顯的區(qū)別(不支持的命令列表),上層應用可以像使用單機的Redis一樣使用,Codis底層會處理請求的轉發(fā),不停機的數(shù)據(jù)遷移等工作,所有后邊的一切事情,對于前面客戶端來說是透明的,可以簡單的認為后邊連接是一個內(nèi)存無限大的Redis服務。

Codis架構圖:

以上我們可以看到codis-proxy是單個節(jié)點的,因為我們可以通過結合keepalived來實現(xiàn)高可用:

codis-proxy 提供連接集群redis服務的入口

codis-redis-group 實現(xiàn)redis讀寫的水平擴展,高性能

codis-redis 實現(xiàn)redis實例服務,通過codis-ha實現(xiàn)服務的高可用

?

二、組件說明

codis-proxy : 是客戶端連接的Redis代理服務,codis-proxy 本身實現(xiàn)了Redis協(xié)議,表現(xiàn)得和一個原生的Redis沒什么區(qū)別(就像Twemproxy),對于一個業(yè)務來說,可以部署多個codis-proxy,codis-proxy本身是沒狀態(tài)的。

codis-config :是Codis的管理工具,支持包括,添加/刪除Redis節(jié)點,添加/刪除Proxy節(jié)點,發(fā)起數(shù)據(jù)遷移等操作,codis-config本身還自帶了一個http server,會啟動一個dashboard,用戶可以直接在瀏覽器上觀察Codis集群的狀態(tài)。

codis-server:是Codis項目維護的一個Redis分支,基于2.8.13開發(fā),加入了slot的支持和原子的數(shù)據(jù)遷移指令,Codis上層的codis-proxy和codis-config只能和這個版本的Redis交互才能正常運行。

ZooKeeper?:用來存放數(shù)據(jù)路由表和codis-proxy節(jié)點的元信息,codis-config發(fā)起的命令都會通過ZooKeeper同步到各個存活的codis-proxy

?

說明:

??? Codis支持按照Namespace區(qū)分不同的產(chǎn)品,擁有不同的product name 的產(chǎn)品,各項配置都不會沖突。

?

實驗環(huán)境:

角色 ip地址 主機名 codis-redis-master 192.168.10.128 redis-master codis-redis-slave 192.168.10.129 redis-slave
zk,codis-proxy 192.168.10.130 codis-proxy


?

三、安裝配置(我這里只部署單個codis-proxy節(jié)點的環(huán)境),在codis-proxy服務器上操作:

1、安裝go:

下載安裝包:(貌似海外服務器才能下載)

wget https://storage.googleapis.com/golang/go1.4.1.linux-amd64.tar.gz

下載后,解壓就可以用了:

[root@codis-proxy ~]# tar -zxf go1.4.1.linux-amd64.tar.gz -C /usr/local/

2、安裝JDK,自己在官網(wǎng)下載一個安裝即可,版本要求不嚴格,后面的zookeeper會用到JDK:

[root@codis-proxy ~]# sh jdk-6u34-fcs-bin-b04-linux-amd64-19_jul_2012.bin
[root@codis-proxy ~]# mv jdk1.6.0_34 /usr/local/
[root@codis-proxy ~]# mv /usr/local/jdk1.6.0_34 /usr/local/jdk

3、安裝zookeeper

[root@codis-proxy ~]# wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz [root@codis-proxy ~]# tar -xzf zookeeper-3.4.6.tar.gz -C /usr/local/

然后修改環(huán)境變量為 vim /etc/profile 在最后添加以下內(nèi)容:

export GOROOT=/usr/local/go export GOPATH=/usr/local/codis JAVA_HOME=/usr/local/jdk CLASS_PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.6 export PATH=$PATH:$GOROOT/bin:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin

然后執(zhí)行 source /etc/profile
編輯一個文件來測試一下go是否正常使用了:

[root@codis-proxy ~]# cat hello.go package mainimport "fmt"func main(){fmt.Printf("hello,world\n")} [root@codis-proxy ~]# go run hello.go hello,world

可以看到,正常打印hello,world了,在命令直接輸入java,如果出現(xiàn)一大堆使用說明,就意味java安裝成功了。

?4、安裝codis,安裝codis時依賴go,所以在安裝codis先裝好go,上面已經(jīng)裝好:

獲取codis:

[root@codis-proxy ~]# yum install -y git [root@codis-proxy ~]# go get github.com/wandoulabs/codis package github.com/wandoulabs/codisimports github.com/wandoulabs/codisimports github.com/wandoulabs/codis: no buildable Go source files in /usr/local/codis/src/github.com/wandoulabs/codis [root@codis-proxy ~]#

可以看到no buildable Go source files?in /usr/local/codis/src/github.com/wandoulabs/codis,我們在上面環(huán)境就是設置GOAPTH=/usr/local/codis,所以只要執(zhí)行上面的獲取命令,就會下載在/usr/local/codis下:
我們進到提示的路徑進行安裝,安裝過程比較久,耐心等待:

[root@codis-proxy ~]# cd /usr/local/codis/src/github.com/wandoulabs/codis [root@codis-proxy codis]# ls bootstrap.sh cmd doc docker Dockerfile extern Godeps Makefile MIT-LICENSE.txt pkg README.md sample test vitess_license [root@codis-proxy codis]# sh bootstrap.sh downloading dependcies, it may take a few minutes...

執(zhí)行腳本完成看,會看到make gotest的結果:

Hint: To run 'make test' is a good idea ;)make[2]: Leaving directory `/usr/local/codis/src/github.com/wandoulabs/codis/extern/redis-2.8.13/src' make[1]: Leaving directory `/usr/local/codis/src/github.com/wandoulabs/codis/extern/redis-2.8.13' go test ./pkg/... ./cmd/... -race ? github.com/wandoulabs/codis/pkg/env [no test files] ok github.com/wandoulabs/codis/pkg/models 5.773s ok github.com/wandoulabs/codis/pkg/proxy/cachepool 0.009s ? github.com/wandoulabs/codis/pkg/proxy/group [no test files] ok github.com/wandoulabs/codis/pkg/proxy/parser 0.016s ? github.com/wandoulabs/codis/pkg/proxy/redisconn [no test files] ? github.com/wandoulabs/codis/pkg/proxy/redispool [no test files] ok github.com/wandoulabs/codis/pkg/proxy/router 16.092s ? github.com/wandoulabs/codis/pkg/proxy/router/topology [no test files] ok github.com/wandoulabs/codis/pkg/utils 0.008s ok github.com/wandoulabs/codis/cmd/cconfig 0.016s ? github.com/wandoulabs/codis/cmd/proxy [no test files] [root@codis-proxy codis]#

會在 codis/bin 文件夾生成 codis-config, codis-proxy 兩個可執(zhí)行文件, (另外, bin/assets 文件夾是 codis-config 的 dashboard http 服務需要的前端資源, 需要和 codis-config 放置在同一文件夾下)

將編譯好后,把bin目錄和一些腳本復制過去/usr/local/codis目錄下:

[root@codis-proxy codis]# mkdir -p /usr/local/codis/{log,redis_conf} [root@codis-proxy codis]# cp -rf bin /usr/local/codis/ [root@codis-proxy codis]# cp sample/config.ini /usr/local/codis/bin/ [root@codis-proxy codis]# cp sample/redis_conf/6381.conf /usr/local/codis/redis_conf/ [root@codis-proxy codis]# cp -rf src/github.com/wandoulabs/codis/sample/* ./

?到止,codis-proxy的環(huán)境幾乎搭建好了,下面進行配置:

?

5、進行配置

在codis-proxy上操作

配置zookeeper,修改配置文件:

[root@codis-proxy ~]# cp /usr/local/zookeeper-3.4.6/conf/zoo_sample.cfg /usr/local/zookeeper-3.4.6/conf/zoo.cfg [root@codis-proxy ~]# cd /usr/local/zookeeper-3.4.6/conf/ [root@codis-proxy conf]# vim zoo.cfg tickTime=2000 initLimit=10 syncLimit=5 dataDir=/data/zookeeper/data autopurge.snapRetainCount=500 autopurge.purgeInterval=24 clientPort=2181 #server.1=codis-1:2888:3888 #server.2=codis-2:2888:3888 #server.2=codis-3:2888:3888

設置myid:
設置myid在我們配置的dataDir指定的目錄下面,創(chuàng)建一個myid文件,里面內(nèi)容為一個數(shù)字,用來標識當前主機,conf/zoo.cfg文件配置的srver.X中的X為什么數(shù)字,則myid文件就輸入這個數(shù)字,我只有一臺zk,所以配置文件里可以不配置server.X,但還是要配置myid的,echo一個數(shù)字1進去即可。如果有多臺zk,則分別在zk服務器上echo對應的數(shù)字進對應的myid文件

[root@codis-proxy conf]# mkdir -p /data/zookeeper/data [root@codis-proxy conf]# echo "1" > /data/zookeeper/data/myid

啟動zookeeper,因為環(huán)境變量里已經(jīng)添加了路徑,直接執(zhí)行命令即可,執(zhí)行zkServer.sh start后,要等一會再執(zhí)行zkServer status:

[root@codis-proxy ~]# zkServer.sh start JMX enabled by default Using config: /usr/local/zookeeper-3.4.6/bin/../conf/zoo.cfg Starting zookeeper ... STARTED [root@codis-proxy ~]# zkServer.sh status JMX enabled by default Using config: /usr/local/zookeeper-3.4.6/bin/../conf/zoo.cfg Mode: standalone [root@codis-proxy ~]#

在那個目錄下啟動,就在那個目錄下產(chǎn)生一個啟動的日志zookeeper.out,查看這個日志可以查看是否正常啟動了。由于單個zookeeper,所以這里指示Mode: standalone,如果有多個zk節(jié)點,就只有一個Mode: leader的狀態(tài),別的都是Mode: follower狀態(tài)。

由于我現(xiàn)在是做一個機器做zk,所以這里幾乎不用修改:

[root@codis-proxy codis]# cd /usr/local/codis
[root@codis-proxy codis]# cat config.ini zk=localhost:2181 //zookeeper的地址, 如果是zookeeper集群,可以這么寫: zk=hostname1:2181,hostname2:2181,hostname3:2181,hostname4:2181,hostname5:2181,如果是etcd,則寫成http://hostname1:port,http://hostname2:port,http://hostname3:port product=test //產(chǎn)品名稱, 這個codis集群的名字, 可以認為是命名空間, 不同命名空間的codis沒有交集 proxy_id=proxy_1 //proxy會讀取, 用于標記proxy的名字, 針對多個proxy的情況, 可以使用不同的config.ini, 只需要更改 proxy_id 即可 net_timeout=5 //檢測狀態(tài)時間間隔 dashboard_addr=localhost:18087 //dashboard 服務的地址,CLI 的所有命令都依賴于 dashboard 的 RESTful API,所以必須啟動 coordinator=zookeeper //如果用etcd,則將zookeeper替換為etcd [root@codis-1 bin]#

?

6、查看一下啟動流程:

[root@codis-proxy codis]# cat usage.md 0. start zookeeper //啟動zookeeper服務 1. change config items in config.ini //修改codis配置文件 2. ./start_dashboard.sh //啟動 dashboard 3. ./start_redis.sh //啟動redis實例 4. ./add_group.sh //添加redis組,一個redis組只能有一個master 5. ./initslot.sh //初始化槽 6. ./start_proxy.sh //啟動proxy 7. ./set_proxy_online.sh //上線proxy項目 8. open browser to http://localhost:18087/admin //訪問web[root@codis-proxy codis]#

這只是一個參考,有些順序不是必須的,但啟動dashboard前,必須啟動zookeeper服務,這是必須的,后面有很多操作,都可以在web頁面完成,例如添加/刪除組,添加/刪除redis實例等。

7、我們到啟動dashboard這一步了,我們修改一下腳本,運行即可啟動,修改為如下:(由本來的../修改為./)

[root@codis-proxy codis]# cat start_dashboard.sh #!/bin/sh nohup ./bin/codis-config -c config.ini -L ./log/dashboard.log dashboard --addr=:18087 --http-log=./log/requests.log &>/dev/null &[root@codis-proxy codis]#

啟動后查看下是否正常啟動了:

[root@codis-proxy codis]# sh start_dashboard.sh [root@codis-proxy codis]# ps -ef |grep dashboard root 1463 1 2 20:38 pts/0 00:00:00 ./bin/codis-config -c config.ini -L ./log/dashboard.log dashboard --addr=:18087 --http-log=./log/requests.log root 1470 1277 0 20:38 pts/0 00:00:00 grep dashboard [root@codis-proxy codis]#


8、初始化槽(修改腳本,把../修改為./以及把后面的一些暫時沒用的東西注釋掉)

[root@codis-proxy codis]# cat initslot.sh #!/bin/sh echo "slots initializing..." ./bin/codis-config -c config.ini slot init -f echo "done"#echo "set slot ranges to server groups..." #./bin/codis-config -c config.ini slot range-set 0 511 1 online #./bin/codis-config -c config.ini slot range-set 512 1023 2 online #echo "done"[root@codis-proxy codis]#

執(zhí)行初始化槽腳本:

[root@codis-proxy codis]# sh initslot.sh slots initializing... {"msg": "OK","ret": 0 } done [root@codis-proxy codis]#

?9、分別在服務器redis-master和redis-slave上搭建好redis實例:

(1)在redis-master操作:

[root@redis-master ~]# tar zxf redis-2.8.19.tar.gz -C /usr/local/ [root@redis-master ~]# mkdir -p /data/cluster/7000 [root@redis-master ~]# cd /usr/local/redis-2.8.19/ [root@redis-master redis-2.8.19]# make && make install
[root@redis-master redis-2.8.19]# cp redis.conf /data/cluster/7000/

修改配置文件的端口為7000和把daemonize on修改為daemonize yes(注意:如果要上線到生產(chǎn)環(huán)境,配置文件根據(jù)需要修改)

[root@redis-master redis-2.8.19]# cd /data/cluster/7000/ [root@redis-master 7000]# sed -i '/port/s/6379/7000/' redis.conf [root@redis-master 7000]# sed -i '/daemonize/s/no/yes/' redis.conf

啟動實例:

[root@redis-master 7000]# redis-server redis.conf [root@redis-master 7000]# ps -ef |grep 7000 root 2902 1 0 21:18 ? 00:00:01 redis-server *:7000 root 2939 1183 0 21:37 pts/1 00:00:00 grep 7000 [root@redis-master 7000]#

redis-master已經(jīng)啟動成功了


(2)配置redis-slave,操作同上:(本以為要在redis-slave配置文件里添加 slaveof 192.168.10.128 7000 來配置主從關系,經(jīng)過測試發(fā)現(xiàn),是不用進行這樣配置的)

在redis-slave服務器上操作:

[root@redis-slave ~]# tar zxf redis-2.8.19.tar.gz -C /usr/local/ [root@redis-slave ~]# cd /usr/local/redis-2.8.19/
[root@redis-slave redis-2.8.19]# make && make install
[root@redis-slave redis-2.8.19]# mkdir -p /data/cluster/7001
[root@redis-slave redis-2.8.19]# cp redis.conf /data/cluster/7001/

修改配置文件的端口為7000和把daemonize on修改為daemonize yes

[root@redis-slave redis-2.8.19]# cd /data/cluster/7001/ [root@redis-slave 7001]# sed -i '/port/s/6379/7001/' redis.conf [root@redis-slave 7001]# sed -i '/daemonize/s/no/yes/' redis.conf

啟動redis實例:

[root@redis-slave 7001]# redis-server redis.conf [root@redis-slave 7001]# ps -ef |grep 7001 root 2988 1 0 08:28 ? 00:00:00 redis-server *:7001 root 3016 1304 0 08:40 pts/1 00:00:00 grep 7001 [root@redis-slave 7001]#

redis-slave已經(jīng)正常啟動。實例已經(jīng)配置完,可以去web頁面操作了。

10、添加組ID,為組添加主從實例,一個組里只能有一個redis-master:

訪問dashboard的IP加端口:http://192.168.10.130:18087(最好用Firefox瀏覽器,別的瀏覽器坑了我N久,說多都是淚啊!!)

?

點New Server Group添加組:

點Add New Redis Instance添加主機:(第一個添加的都是master,也只能有一個master)

添加redis-slave主機:

添加完成后可以看到:

給組group_1分配槽的范圍為1-1023:

?

成功后返回:

11、測試一下redis-master和redis-slave是否正常同步數(shù)據(jù)了:

在redis-master上寫數(shù)據(jù):

[root@redis-master 7000]# redis-cli -c -p 7000 127.0.0.1:7000> set name test OK 127.0.0.1:7000> set age 24 OK 127.0.0.1:7000>

在redis-slave查看是否把數(shù)據(jù)同步過來了:

[root@redis-slave 7001]# redis-cli -c -p 7001 127.0.0.1:7001> get name "test" 127.0.0.1:7001> get age "29" 127.0.0.1:7001>

可以看到正常同步的。

11、啟動codis-proxy,在codis-proxy服務器上操作:

修改腳本start_proxy.sh腳本,把../修改為./(該腳本意思是如果有啟動的proxy,先停了,再啟動;proxy_1是config.ini里定義的,如果有多個Proxy,只需要修改proxy_id即可):

[root@codis-proxy codis]# cat start_proxy.sh #!/bin/sh echo "shut down proxy_1..." ./bin/codis-config -c config.ini proxy offline proxy_1 echo "done"echo "start new proxy..." nohup ./bin/codis-proxy --log-level info -c config.ini -L ./log/proxy.log --cpu=8 --addr=0.0.0.0:19000 --http-addr=0.0.0.0:11000 & echo "done"echo "sleep 3s" sleep 3 tail -n 30 ./log/proxy.log[root@codis-proxy codis]#

啟動并檢查進程:

[root@codis-proxy codis]# sh start_proxy.sh shut down proxy_1... {"msg": "OK","ret": 0 } done start new proxy... done sleep 3s nohup: 把輸出追加到"nohup.out""state": {"status": "offline","migrate_status": {"from": -1,"to": -1},"last_op_ts": "0"} } Ts:1429609783 Receivers:[{"id":"proxy_1","addr":"codis-3:19000","last_event":"","last_event_ts":0,"state":"online","description":"","debug_var_addr":"codis-3:11000","pid":18984,"start_at":"2015-04-20 19:50:28.584939619 +0800 CST"}]} 2015/04/21 17:49:43 topology.go:50: [error] slot not online, {"product_name": "test","id": 0,"group_id": -1,"state": {"status": "offline","migrate_status": {"from": -1,"to": -1},"last_op_ts": "0"} } 2015/04/21 17:49:43 router.go:98: [fatal] github.com/wandoulabs/codis/pkg/models/server_group.go:92: group -1 not found github.com/wandoulabs/codis/pkg/proxy/router/topology/topology.go:55: 2015/04/23 14:34:54 main.go:98: [info] dump file path: /usr/local/codis/bin 2015/04/23 14:34:54 main.go:106: [info] running on 0.0.0.0:19000 2015/04/23 14:34:54 helper.go:317: [info] &{proxyId:proxy_1 productName:test zkAddr:localhost:2181 f:<nil> netTimeout:5 proto:tcp provider:zookeeper} 2015/04/23 14:34:54 router.go:642: [info] start with configuration: &{proxyId:proxy_1 productName:test zkAddr:localhost:2181 f:<nil> netTimeout:5 proto:tcp provider:zookeeper} 2015/04/23 14:34:54 router.go:669: [info] proxy_info:{Id:proxy_1 Addr:codis-proxy:19000 LastEvent: LastEventTs:0 State:offline Description: DebugVarAddr:codis-proxy:11000 Pid:4016 StartAt:2015-04-23 14:34:54.53585951 +0800 CST} 2015/04/23 14:34:54 router.go:614: [warning] proxy_1 wait to be online [root@codis-proxy codis]#

看到日志有點小報錯,但可以忽略,后面出現(xiàn)[warning] proxy_1 wait to be online,意思是等待上線:
查看進程:

[root@codis-proxy codis]# ps -ef |grep proxy avahi 1087 1 0 Apr22 ? 00:00:00 avahi-daemon: running [codis-proxy.local] root 4016 1 0 14:34 pts/0 00:00:00 ./bin/codis-proxy --log-level info -c config.ini -L ./log/proxy.log --cpu=8 --addr=0.0.0.0:19000 --http-addr=0.0.0.0:11000 root 4028 1277 0 14:39 pts/0 00:00:00 grep proxy [root@codis-proxy codis]#

上線proxy_1,修改腳本并運行腳本(把../修改為./):

[root@codis-proxy codis]# cat set_proxy_online.sh #!/bin/sh echo "set proxy_1 online" ./bin/codis-config -c config.ini proxy online proxy_1 echo "done"[root@codis-proxy codis]# sh set_proxy_online.sh
{
? "msg": "OK",
? "ret": 0
}
[root@codis-proxy codis]#

?

去web面面刷新即可看到proxy_1:

?

下面做個測試,測試大體內(nèi)容是:

1)假設redis-master有問題,也可以理解為掛了

2)在頁面把redis-slave手動提升為master

3)把有問題的master下線

4)假如剛剛有問題的master已經(jīng)正常恢復服務了,轉為redis-slave

在上面已經(jīng)測試了,在redis-master寫數(shù)據(jù),redis-slave上是可以看到數(shù)據(jù)同步過來的,現(xiàn)在在redis-slave上寫數(shù)據(jù),看主能不能看到:

[root@redis-slave 7001]# redis-cli -c -p 7001 127.0.0.1:7001> set MySQL innodb OK 127.0.0.1:7001> get MySQL "innodb" 127.0.0.1:7001>

在redis-master查看:

[root@redis-master 7000]# redis-cli -c -p 7000 127.0.0.1:7000> keys * 1) "name" 2) "age" 127.0.0.1:7000>

可以看到,redis-slave寫數(shù)據(jù),是不會到master上的。

現(xiàn)在模擬redis-master down機了:

[root@redis-master 7000]# ps -ef |grep 7000 root 3063 1 0 Apr15 ? 00:00:18 redis-server *:7000 root 3460 1183 0 02:21 pts/1 00:00:00 grep 7000 [root@redis-master 7000]# kill -9 3063 [root@redis-master 7000]#

在web頁面刷新可以看到master已經(jīng)掛了:

我們把redis-slave提升master,點Promote to Master按鈕即可:

可以看到本來的master已經(jīng)變成offline下線狀態(tài)了,這時我們把它刪除掉,點后面的X刪除主機。假如剛剛下線的redis服務器恢復正常了,再點上面的Add New Redis Instance按鈕添加主機:

可以看到剛剛下線redis服務器,現(xiàn)在變成了redis-slave的角色了。我們測試下數(shù)據(jù)是否正常同步:

注意:現(xiàn)在7001端口的角色是master的了,在它上面寫數(shù)據(jù):

[root@redis-slave 7001]# redis-cli -c -p 7001 127.0.0.1:7001> set aa bb OK 127.0.0.1:7001> set cc dd OK 127.0.0.1:7001>

新的redis-slave上查看數(shù)據(jù)也是就7000端口對應的redis:

[root@redis-master 7000]# redis-cli -c -p 7000 127.0.0.1:7000> get aa "bb" 127.0.0.1:7000> get cc "dd" 127.0.0.1:7000>

可以看到是正常同步的。嘻嘻

?

12、下面我們進行redis壓力測試說明和樣例:

[root@redis-master ~]# redis-benchmark --help Usage: redis-benchmark [-h <host>] [-p <port>] [-c <clients>] [-n <requests]> [-k <boolean>]-h <hostname> Server hostname (default 127.0.0.1) --主機ip地址-p <port> Server port (default 6379) --端口-s <socket> Server socket (overrides host and port) --socket(如果測試在服務器上測可以用socket方式)-a <password> Password for Redis Auth --redis的認證密碼-c <clients> Number of parallel connections (default 50) --客戶端連接數(shù)-n <requests> Total number of requests (default 100000) --總請求數(shù)-d <size> Data size of SET/GET value in bytes (default 2) --set、get的value大小-dbnum <db> SELECT the specified db number (default 0) --選擇哪個數(shù)據(jù)庫測試(一般0-15)-k <boolean> 1=keep alive 0=reconnect (default 1) --是否采用keep alive模式-r <keyspacelen> Use random keys for SET/GET/INCR, random values for SADD --隨機產(chǎn)生鍵值時的隨機數(shù)范圍Using this option the benchmark will expand the string __rand_int__inside an argument with a 12 digits number in the specified rangefrom 0 to keyspacelen-1. The substitution changes every time a commandis executed. Default tests use this to hit random keys in thespecified range.-P <numreq> Pipeline <numreq> requests. Default 1 (no pipeline). --pipeline的個數(shù)(如果使用pipeline會把多個命令封裝在一起提高效率)-q Quiet. Just show query/sec values --僅僅查看每秒的查詢數(shù)--csv Output in CSV format --用csv方式輸出-l Loop. Run the tests forever --循環(huán)次數(shù)-t <tests> Only run the comma separated list of tests. The test --指定命令names are the same as the ones produced as output. -I Idle mode. Just open N idle connections and wait. --僅打開n個空閑鏈接Examples:Run the benchmark with the default configuration against 127.0.0.1:6379:$ redis-benchmarkUse 20 parallel clients, for a total of 100k requests, against 192.168.1.1:$ redis-benchmark -h 192.168.1.1 -p 6379 -n 100000 -c 20 --測試set、get、mset、sadd等場景下的性能Fill 127.0.0.1:6379 with about 1 million keys only using the SET test:$ redis-benchmark -t set -n 1000000 -r 100000000 --測試set隨機數(shù)的性能Benchmark 127.0.0.1:6379 for a few commands producing CSV output:$ redis-benchmark -t ping,set,get -n 100000 --csv --使用csv的輸出方式測試Benchmark a specific command line:$ redis-benchmark -r 10000 -n 10000 eval 'return redis.call("ping")' 0 --測試基本命令的速度Fill a list with 10000 random elements:$ redis-benchmark -r 10000 -n 10000 lpush mylist __rand_int__ --測試list入隊的速度On user specified command lines __rand_int__ is replaced with a random integerwith a range of values selected by the -r option.

?

13、命令維護說明:

?View Code

?

總結:

一、搭建環(huán)境前,先好好看一下codis的資料還有zookeeper的資料,思路理清了,搭建起來就沒那么吃力了,剛剛開始時,我糾結了N久zookeeper到底有什么用,哈哈,好好看看相關的資料就明白它的作用了。

二、codis還有別的測試,我上面就不一一寫出了,如果上線到生產(chǎn)環(huán)境中,一定要做好各種測試,希望大家也能夠把自己研究出來的東西分享出來,一起學習,一起進步^.^。

三、?reids-cluster計劃在redis3.0中推出了,因為剛推出不久,相信會存在不少的坑,所以生產(chǎn)環(huán)境中的redis集群可以考慮豌豆莢開源的codis,還有Twitter開源的twemproxy,這兩個已經(jīng)有很多公司在線上使用了,推薦大家使用,后期會補上twemproxy的博客。

參考資料:

codis官網(wǎng):https://github.com/wandoulabs/codis

https://github.com/wandoulabs/codis/blob/master/doc/tutorial_zh.md

https://github.com/wandoulabs/codis/blob/master/doc/FAQ_zh.md

http://xmarker.blog.163.com/blog/static/226484057201422491547716/ (redis壓力測試)

轉載于:https://www.cnblogs.com/hujihon/p/6429190.html

總結

以上是生活随笔為你收集整理的Codis集群的搭建与使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲系列在线观看 | 欧美一级一区二区三区 | 青苹果av | 欧美激情啪啪 | 中国黄色网页 | www.色午夜 | 97一级片 | 99热思思 | 牛夜精品久久久久久久99黑人 | 久久久久久五月天 | 在线观看日韩一区二区 | 性欧美激情| 日日干影院 | 精品亚洲永久免费精品 | 色噜噜狠狠狠综合曰曰曰 | 青青草伊人 | 亚洲精品乱码久久久久久蜜桃麻豆 | 久久这里只有精品久久 | 久草视频在线免费播放 | 天天色天天爽 | 精品777| 中文字幕不卡视频 | 一级视频片 | 丁香激情五月少妇 | 全部免费毛片在线播放高潮 | 久久精品视屏 | 精品动漫一区二区三区的观看方式 | 黄色国产大片 | 亚洲瘦老头同性xxxxx | 欧美三级免费观看 | 婷婷九月综合 | 污黄网站在线观看 | 超碰在线中文字幕 | 国产精品乱码一区二区三区 | 在线高清观看免费 | 一级黄色免费大片 | 香蕉视频成人在线 | 日本少妇一级片 | 午夜精品剧场 | 福利电影一区二区三区 | 极品美女被c | 91精品久久久久 | 农村少妇 | 一本一本久久a久久精品综合麻豆 | 欧美日韩国产精品一区二区三区 | 黄色三级免费观看 | 久久综合久久综合久久 | 国产一级片免费视频 | 天堂色av | 精品国产精品国产偷麻豆 | 韩国三级在线看 | 国产真人做爰视频免费 | 久久久久无码精品国产 | 国产又粗又长又黄视频 | 精品一区二区三区视频在线观看 | 亚洲在线视频播放 | 午夜精品久久久久久久四虎美女版 | 激情综合网五月天 | 日韩一二三区在线观看 | 亚洲 小说 欧美 激情 另类 | 欧美日韩性生活 | 欧美一级特黄aaaaaa大片在线观看 | 9999精品| 欧美高清一区二区三区四区 | 国产一极毛片 | 99在线免费观看 | 九月婷婷丁香 | 欧美激情四区 | 国语对白做受xxxxx在线中国 | 草在线 | yy色综合 | 中文字幕色| 黄av网站| 美女三级黄色片 | 欧美性aaa | 免费看的黄色录像 | 性一交一乱一色一视频麻豆 | 伊人影视在线 | www噜噜噜| 国产波霸爆乳一区二区 | 亚洲成人网页 | 日本精品久久久久 | 一级黄色大片视频 | www.成人免费| 天天射天天射天天射 | 粗大黑人巨茎大战欧美成人免费看 | 国产99久久久 | 亚洲一区二区在线视频 | 色大师在线观看 | 亚洲1234区 | 黄色xxxxxx| 另类小说亚洲色图 | 色骚网| 婷婷久久亚洲 | 操你啦免费视频 | 国产欧美三区 | 蜜桃视频黄色 | 极品少妇xxxx精品少妇偷拍 | 懂色av蜜臀av粉嫩av分享吧最新章节 |