Codis 集群

一、codis介紹
codis是一個分布式redis集群解決方案,對于上層的應(yīng)用來說, 連接到codis-proxy和連接原生的redis-server沒有明顯的區(qū)別。
上層應(yīng)用可以像使用單機(jī)的redis一樣使用,codis底層會處理請求的轉(zhuǎn)發(fā),不停機(jī)的數(shù)據(jù)遷移等工作厂抽。所有后邊的一切事情,對于前面的客戶端來說是透明的丁眼,可以簡單的認(rèn)為后邊連接的是一個內(nèi)存無限大的redis服務(wù)筷凤。
codis由四部分組成:
codis proxy(codis-proxy)
codis dashboard(codis-config)
codis redis(codis-server)
zookeeper/etcd
codis-proxy是客戶端連接的redis代理服務(wù),codis-proxy本身實(shí)現(xiàn)了redis協(xié)議户盯,表現(xiàn)得和一個原生的redis沒什么區(qū)別(就像twemproxy)嵌施,對于一個業(yè)務(wù)來說,可以部署多個codis-proxy莽鸭,codis-proxy本身是無狀態(tài)的吗伤。
codis-config是codis的管理工具,支持包括:添加/刪除redis節(jié)點(diǎn)硫眨,添加/刪除proxy節(jié)點(diǎn)足淆,發(fā)起數(shù)據(jù)遷移等操作。
codis-config本身還自帶了一個http-server,會啟動一個dashboard巧号,用戶可以直接在瀏覽器上觀察codis集群的運(yùn)行狀態(tài)族奢。
codis-server是codis項(xiàng)目維護(hù)的一個redis分支,基于redis2.8.21開發(fā)丹鸿,加入了slot的支持和原子的數(shù)據(jù)遷移指令越走。codis上層的codis-proxy和codis-config只能和這個版本的redis交互才能正常運(yùn)行。
codis依賴zookeeper來存放數(shù)據(jù)路由表和codis-proxy節(jié)點(diǎn)的元信息靠欢,codis-config發(fā)起的命令都會通過zookeeper同步到各個存活的codis-proxy廊敌。
codis支持按照namespace區(qū)分不同的產(chǎn)品,擁有不同的product name的產(chǎn)品门怪,各項(xiàng)配置都不會沖突骡澈。
codis架構(gòu)圖如下:


二、環(huán)境準(zhǔn)備
codis集群的搭建掷空,需要zookeeper集群肋殴,有關(guān)zookeeper集群的搭建,可以參考這篇文章《爛泥:zookeeper集群搭建》坦弟。
除了zookeeper集群之外护锤,我們還需要安裝go語言環(huán)境,因?yàn)閏odis是基于go語言開發(fā)的减拭。
2.1 ****安裝基礎(chǔ)依賴
安裝基礎(chǔ)依賴蔽豺,使用如下命令:
yum install -y git gcc make g++ gcc-c++ automake openssl-devel zlib-*
clip_image002

基礎(chǔ)依賴安裝往后区丑,我們現(xiàn)在開始配置go語言環(huán)境拧粪。

2.2 go****語言環(huán)境搭建**
codis是基于go語言開發(fā)的,所以我們要在所有服務(wù)器上都配置go語言環(huán)境沧侥。

GOPATH, GOROOT配置:https://golang.org/doc/install

下載go語言包可霎,如下:
wget https://storage.googleapis.com/golang/go1.6.1.linux-amd64.tar.gz


下載完畢后,解壓到/usr/local宴杀,如下:
tar -C /usr/local -xf go1.6.1.linux-amd64.tar.gz
clip_image004

把go加入到系統(tǒng)的環(huán)境變量癣朗,如下:
GOPATH:是go的工作目錄
GOROOT:是go的安裝目錄
vim /etc/profile
export GOROOT=$PATH:/usr/local/go/bin
export GOPATH=/usr/local/go/work
clip_image005

讓剛剛加入的環(huán)境變量生效,并查看go是否配置成功旺罢,如下:
source /etc/profile
env
go version
clip_image006

通過上圖旷余,我們可以很明顯的看出go語言環(huán)境配置成功。

三扁达、安裝codis
codis的安裝正卧,我們可以通過三種不同的方式進(jìn)行:通過go下載安裝、通過git方式和通過源碼方式跪解,下面分別介紹下炉旷。

3.1 ****通過go下載安裝

官方github地址為:https://github.com/CodisLabs/codis
cd /usr/local/go/work/src/github.com/CodisLabs/codis
官方使用文檔地址為:
https://github.com/CodisLabs/codis/blob/master/doc/tutorial_zh.md
按照官方github介紹,codis首選方式是通過go下載安裝的。命令如下:
go get -u -d github.com/CodisLabs/codis


注意:由于眾所周知的原因窘行,這一步比較慢饥追,需要耐心等待。上一步執(zhí)行完畢后罐盔,我們切換到目錄下但绕,進(jìn)行編譯,如下:
make
clip_image008

clip_image009

clip_image010

注意:這一步也比較慢惶看,需要耐心等待壁熄。
make編譯執(zhí)行完畢后后,會在bin目錄下生成codis-config碳竟、codis-proxy草丧、codis-server三個可執(zhí)行文件以及assets目錄。
其中assets是codis-config的dashboard http 服務(wù)需要的前端資源莹桅,需要和codis-config放置在同一目錄下昌执。如下:
ll bin/
clip_image011

編譯完畢后,我們現(xiàn)在來測試編譯的結(jié)果诈泼,使用如下命令:
make gotest
clip_image012

通過上圖懂拾,我們可以看到codis已經(jīng)安裝成功。

3.2 ****通過git方式

上一章節(jié)铐达,我們介紹了codis通過go下載安裝的方法岖赋,這一章節(jié),我們通過git方式進(jìn)行安裝瓮孙。
首先下載codis最新的git倉庫唐断,使用如下命令:
git clone https://github.com/CodisLabs/codis.git


git倉庫下載完畢后,我們接下來進(jìn)行如下的操作杭抠。如下:
mkdir -p /usr/local/src/github.com/CodisLabs/
cp -r codis /usr/local/src/github.com/CodisLabs/
cd /usr/local/src/github.com/CodisLabs/codis/
clip_image014

以上操作完畢后脸甘,就和通過go下載安裝方式一樣了。執(zhí)行make命令進(jìn)行編譯偏灿,然后執(zhí)行make gotest命令進(jìn)行測試丹诀。

3.3 ****通過下載源碼

下面我們來介紹下,通過源碼方式的安裝翁垂。下載codis源碼文件铆遭,如下:
wget https://github.com/CodisLabs/codis/archive/3.0.3.tar.gz


解壓源碼包,如下:
tar -xf 3.0.3.tar.gz
cd codis-3.0.3/
clip_image016

然后進(jìn)行編譯沿猜,使用make命令枚荣,如下:
clip_image017

clip_image018

clip_image019

clip_image020

這一步很慢,需要下載各種依賴邢疙,然后是make gotest棍弄。
基本和go下載安裝方式一樣望薄,不過需要說明下,我通過源碼方式一直沒有安裝成功呼畸。報如下錯誤:
clip_image021

所以以上三種安裝的方法痕支,建議使用第一、二種蛮原,盡管有點(diǎn)慢卧须。
四、配置codis集群
codis安裝完畢后儒陨,我們現(xiàn)在來配置codis集群花嘶。在正式配置集群之前,先創(chuàng)建相關(guān)的目錄蹦漠,然后復(fù)制相關(guān)文件到新的目錄下椭员。使用如下命令:
cd /usr/local/go/work/src/github.com/CodisLabs/codis
mkdir -p /usr/local/codis/{log,redis_conf}
cp -rf bin/ /usr/local/codis/
cp config.ini /usr/local/codis/
cp extern/redis-test/conf/6379.conf /usr/local/codis/redis_conf/20189.conf
cp extern/redis-test/conf/6380.conf /usr/local/codis/redis_conf/20190.conf
clip_image022

4.1 ****編輯codis配置文件

上述操作完畢后,我們來修改codis的配置文件config.ini笛园,在此我們只需要修改相關(guān)的選項(xiàng)即可隘击。如下:
vim /usr/local/codis/config.ini
coordinator=zookeeper
zk=192.168.1.9:2181,192.168.1.124:2181,192.168.1.231:2181
product=test
dashboard_addr=192.168.1.9:18087
password=
backend_ping_period=5
session_max_timeout=1800
session_max_bufsize=131072
session_max_pipeline=1024
zk_session_timeout=30000
proxy_id=proxy_9
該配置文件中,我們需要注意三個參數(shù):zk研铆、dashboard_addr埋同、proxy_id。
其中zk是表示zookeeper集群的服務(wù)器IP地址棵红,dashboard_addr表示codis web管理的IP地址及端口凶赁,proxy_id表示codis的id,注意每臺codis服務(wù)器該值要唯一逆甜。


另外兩臺服務(wù)器的codis配置文件虱肄,內(nèi)容如下:
clip_image024

clip_image025

到此codis配置文件修改完畢。

4.2 ****編輯redis配置文件

codis配置文件修改完畢后忆绰,我們現(xiàn)在來修改redis配置文件浩峡。
每臺codis服務(wù)器上,我們要啟動兩個redis實(shí)例(也可以啟動多個redis實(shí)例)错敢,所以我們要配置兩個redis。如下:
vim /usr/local/codis/redis_conf/20189.conf
daemonize no
pidfile /var/run/redis20189.pid
port 20189
tcp-backlog 511
timeout 0
tcp-keepalive 0
loglevel notice
logfile /var/log/redis/20189.log
databases 16
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump20189.rdb
dir /usr/local/codis/
slave-serve-stale-data yes
slave-read-only yes
repl-disable-tcp-nodelay no
slave-priority 100
appendonly no
appendfilename “appendonly.aof”
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events “”
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes


配置第二個redis實(shí)例缕粹,如下:
yes|cp /usr/local/codis/redis_conf/20189.conf /usr/local/codis/redis_conf/20190.conf
sed -i ‘s/20189/20190/g’ /usr/local/codis/redis_conf/20190.conf
mkdir -p /var/log/redis/
clip_image027

每臺codis服務(wù)器上redis配置完畢后稚茅,我們來啟動redis實(shí)例,如下:
/usr/local/codis/bin/codis-server /usr/local/codis/redis_conf/20189.conf &
/usr/local/codis/bin/codis-server /usr/local/codis/redis_conf/20190.conf &
ps -ef |grep codis-server
clip_image028

注意:我們每臺codis服務(wù)器上的redis實(shí)例都需要啟動平斩。

4.3 ****啟動codis dashboard

redis實(shí)例全部啟動后亚享,我們現(xiàn)在來啟動codis的dashboard。
注意绘面,我們一定要在192.168.1.9這臺codis服務(wù)器上啟動該命令欺税,這是因?yàn)槲覀冊?.1章節(jié)codis配置文件中配置的dashboard地址就是192.168.1.9侈沪。
使用如下命令啟動dashboard:
nohup /usr/local/codis/bin/codis-config -c config.ini dashboard &
netstat -tunlp


codis dashboard訪問端口是18087,如下:
http://codis.ilanni.com:18087/admin/
clip_image030

通過上圖晚凿,我們可以很明顯的看出codis dashboard已經(jīng)正常啟動亭罪。

4.4 ****創(chuàng)建redis server分組

codis dashboard已經(jīng)正常啟動后,我們現(xiàn)在來創(chuàng)添加redis server分組歼秽。如下:


clip_image032

clip_image033

clip_image034

這樣我們第一個redis server分組就創(chuàng)建完畢了应役,可以使用同樣的方法創(chuàng)建第二、三個分組燥筷。如下:
clip_image035

這樣三組redis server分組就創(chuàng)建完畢了箩祥。
當(dāng)然我們也可以通過命令進(jìn)行創(chuàng)建,如下:
/usr/local/codis/bin/codis-config server add-group 1
/usr/local/codis/bin/codis-config server add-group 2
/usr/local/codis/bin/codis-config server add-group 3
/usr/local/codis/bin/codis-config server list
clip_image036

注意:上述命令在三臺codis服務(wù)器上任意一臺上執(zhí)行肆氓。
到此codis的redis server分組添加完畢袍祖。

4.5 ****添加redis實(shí)例

redis server分組添加完畢后,我們現(xiàn)在來為每一個分組添加redis實(shí)例谢揪。先為group_1添加redis實(shí)例盲泛,如下:


clip_image038

這個里面可以填寫任何一個codis服務(wù)器上的redis實(shí)例(哪怕不是codis服務(wù)器的redis實(shí)例),在此我們填寫的是192.168.1.9這臺服務(wù)器上的redis實(shí)例键耕。
clip_image039

可以看到group_1組的第一個redis實(shí)例寺滚,被自動配置為master類型。
現(xiàn)在我們來添加第二個redis實(shí)例屈雄,如下:
clip_image040

clip_image041

通過上圖村视,我們可以很明顯的看到第二個添加的redis實(shí)例被默認(rèn)配置為slave類型。
注意:redis官方的支持的集群也是master-slave主從式的集群酒奶。
group_2組和group_3組的redis實(shí)例添加和上面的操作一樣蚁孔,如下:
clip_image042

這樣三組redis實(shí)例就全部添加完畢。
當(dāng)然我們也可以通過命令進(jìn)行添加惋嚎,如下:
/usr/local/codis/bin/codis-config server add 1 192.168.1.9:20189 master
/usr/local/codis/bin/codis-config server add 1 192.168.1.9:20190 slave
/usr/local/codis/bin/codis-config server add 2 192.168.1.124:20189 master
/usr/local/codis/bin/codis-config server add 2 192.168.1.124:20190 slave
/usr/local/codis/bin/codis-config server add 3 192.168.1.231:20189 master
/usr/local/codis/bin/codis-config server add 3 192.168.1.231:20190 slave
注意:上述命令中的數(shù)字杠氢,表示的是哪一個分組,master/slave表示的是所屬類型另伍。
clip_image043

我們也可以通過命令查看鼻百,各個redis server組的信息恩尾,如下:
/usr/local/codis/bin/codis-config server list
clip_image044

注意:每組添加的第一個redis實(shí)例不能被刪除虏缸,因?yàn)閏odis默認(rèn)把該redis實(shí)例設(shè)置為master。
到此redis server分組的redis實(shí)例添加完畢像吻。

4.6 ****分配slot范圍

codis采用pre-sharding的技術(shù)來實(shí)現(xiàn)數(shù)據(jù)的分片堕汞,默認(rèn)分成1024個slot(0-1023)勺爱。對于每個key來說,可以通過以下公式確定所屬的slot id:slotid=crc32(key)%1024讯检。
每一個slot都會有一個且必須有一個特定的server group id來表示這個slot的數(shù)據(jù)由哪個server group來提供琐鲁。
在分配slot之前卫旱,我們需要初始化slot。
在codis服務(wù)器任意一臺上執(zhí)行bin/codis-config slot init命令围段,該命令會在zookeeper上創(chuàng)建slot相關(guān)信息顾翼。如下:
cd /usr/local/codis
/usr/local/codis/bin/codis-config -c config.ini slot init


slot初始化完畢后,我們現(xiàn)在來分配slot范圍蒜撮。如下:
clip_image046

clip_image047

上圖中的New Group Id是自定義的暴构。
clip_image048

通過上圖,我們可以看到第一組slot分配成功段磨。
現(xiàn)在來查看slot分配信息取逾,如下:
clip_image049

clip_image050

通過上圖,我們可以很明顯的看出組1分配的slot是0-334,335以后還沒有分配∑恢В現(xiàn)在來分配剩下的slot砾隅,如下:
clip_image051

clip_image052

這樣slot已經(jīng)全部分配完畢。
當(dāng)然我們也可以通過命令進(jìn)行分配债蜜,如下:
/usr/local/codis/bin/codis-config slot range-set 0 334 1 online
/usr/local/codis/bin/codis-config slot range-set 335 669 2 online
/usr/local/codis/bin/codis-config slot range-set 670 1023 3 online
clip_image053

查看slot信息晴埂,如下:
/usr/local/codis/bin/codis-config slot info 1
/usr/local/codis/bin/codis-config slot info 2
/usr/local/codis/bin/codis-config slot info 3
clip_image054

4.7 ****啟動codis-proxy

以上全部配置完畢后,我們來啟動codis-proxy寻定,使用如下命令:
nohup /usr/local/codis/bin/codis-proxy
-c /usr/local/codis/config.ini
--log-level=error
-L /usr/local/codis/log/proxy.log
--cpu=2
--addr=192.168.1.9:19000
--http-addr=192.168.1.9:11000 &
下面對以上命令中的參數(shù)進(jìn)行解釋:
-c 配置文件地址儒洛。
-L 日志輸出文件地址。
–log-level=<loglevel> 輸出日志級別(debug<info (default)<warn<error<fatal)狼速。
–cpu=<cpu_num> proxy占用的cpu核數(shù),默認(rèn)1,最好設(shè)置為機(jī)器的物理cpu數(shù)的一半到2/3左右琅锻。
–addr=<proxy_listen_addr> proxy的redis server監(jiān)聽的地址, 格式<ip or hostname>:<port>, 如: localhost:9000, :9001。
–http-addr=<debug_http_server_addr> proxy的調(diào)試信息啟動的http server,可以訪問 http://debug_http_server_addr/debug/vars向胡。


codis-proxy啟動后恼蓬,我們可以在dashboard上進(jìn)行查看,如下:
clip_image056

到此codis集群就搭建完畢僵芹。

五处硬、連接codis集群
codis集群搭建完畢后,現(xiàn)在我們來連接codis集群拇派。要連接codis集群荷辕,我們只需要連接codis-proxy即可。即連接4.7章節(jié)中的codis-proxy服務(wù)器地址攀痊,然后加19000端口桐腌。使用redis-cli命令連接,如下:
redis-cli -h 192.168.1.9 -p 19000
info


通過上圖苟径,我們可以很明顯的看到連接codis集群是ok的。
我們現(xiàn)在對codis集群做一些壓力測試躬审,同時在dashboard上觀察鍵值對的情況棘街。如下:
redis-benchmark -h 192.168.1.9 -p 19000 -c 10000 -d 100 -t set -n 100000 -r 100000
上述命令的意思是蟆盐,使用redis-benchmark壓力測試命令連接codis集群,同時并發(fā)10000個(-c)遭殉,測試set操作(-t)石挂,每個測試數(shù)據(jù)集是100字節(jié)(-d),請求數(shù)是100000(-n),使用使用隨機(jī)數(shù)插入數(shù)值(-r)险污。
clip_image058

通過上圖痹愚,可以很明顯的看到codis集群的性能還是很不錯的呢。
而我們laravel框架中redis的配置直接填寫codis-proxy的連接地址即可蛔糯。如下:
clip_image059

六拯腮、其他
在codis搭建和使用過程中,我們還是會碰到一些其他問題的蚁飒,下面就稍微提下动壤。

6.1 ****報zk節(jié)點(diǎn)不存在錯誤

如果要kill的dashboard的話,強(qiáng)烈建議通過kill -15 pid來關(guān)閉淮逻。
如果是直接使用kill -9進(jìn)行kill的話琼懊,可能會報zk節(jié)點(diǎn)不存在錯誤的話。
這樣的話爬早,我們需要通過連接zookeeper集群哼丈,刪除相關(guān)節(jié)點(diǎn),然后再進(jìn)行操作筛严。刪除節(jié)點(diǎn)操作醉旦,操作如下:
cd /usr/local/zookeeper/
./bin/zkCli.sh -server 127.0.0.1:2181
ls /zk/codis/db_test
rmr /zk/codis/db_test


clip_image061

6.2 ****與阿里云slb集成

在這里我們大致介紹下,codis在與阿里云的slb(負(fù)載均衡)進(jìn)行集成的線上生產(chǎn)環(huán)境的案例脑漫。
目前我們連接codis集群是通過單個codis-proxy來進(jìn)行的髓抑,如果這個節(jié)點(diǎn)掛了,就會出現(xiàn)了單點(diǎn)故障的危險优幸。
所以我們這邊在codis集群每臺服務(wù)器上吨拍,都啟動一個codis-proxy。然后前端使用slb進(jìn)行統(tǒng)一接入网杆,slb后端就有三臺codis-proxy服務(wù)器羹饰。
codis集群的搭建和前面是一樣的,只是在此我們的codis所在ecs(服務(wù)器)只有內(nèi)網(wǎng)IP(省錢)碳却,而且slb我們是要的也是內(nèi)網(wǎng)(省錢)队秩。如下:


clip_image063

這樣的話,客戶端連接slb的地址就是連接codis整個集群了昼浦,同時也避免了單點(diǎn)故障的問題馍资。

  公司的redis有時background save db不成功,通過log發(fā)現(xiàn)下面的告警关噪,很可能由它引起的:

[13223] 17 Mar 13:18:02.207 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
于是通過搜索鸟蟹,也有人跟我遇到同樣的問題乌妙,基本可以確定是由它引起的。
**內(nèi)核參數(shù)overcommit_memory **
它是 內(nèi)存分配策略
可選值:0建钥、1藤韵、2。0熊经, 表示內(nèi)核將檢查是否有足夠的可用內(nèi)存供應(yīng)用進(jìn)程使用泽艘;如果有足夠的可用內(nèi)存,內(nèi)存申請?jiān)试S镐依;否則匹涮,內(nèi)存申請失敗,并把錯誤返回給應(yīng)用進(jìn)程馋吗。1焕盟, 表示內(nèi)核允許分配所有的物理內(nèi)存,而不管當(dāng)前的內(nèi)存狀態(tài)如何宏粤。2脚翘, 表示內(nèi)核允許分配超過所有物理內(nèi)存和交換空間總和的內(nèi)存
****什么是Overcommit和OOM****
Linux對大部分申請內(nèi)存的請求都回復(fù)"yes",以便能跑更多更大的程序绍哎。因?yàn)樯暾垉?nèi)存后来农,并不會馬上使用內(nèi)存。這種技術(shù)叫做Overcommit崇堰。當(dāng)linux發(fā)現(xiàn)內(nèi)存不足時沃于,會發(fā)生OOM killer(OOM=out-of-memory)。它會選擇殺死一些進(jìn)程(用戶態(tài)進(jìn)程海诲,不是內(nèi)核線程)繁莹,以便釋放內(nèi)存。
當(dāng)oom-killer發(fā)生時特幔,linux會選擇殺死哪些進(jìn)程咨演?選擇進(jìn)程的函數(shù)是oom_badness函數(shù)(在mm/oom_kill.c中),該函數(shù)會計(jì)算每個進(jìn)程的點(diǎn)數(shù)(0~1000)蚯斯。點(diǎn)數(shù)越高薄风,這個進(jìn)程越有可能被殺死。每個進(jìn)程的點(diǎn)數(shù)跟oom_score_adj有關(guān)拍嵌,而且oom_score_adj可以被設(shè)置(-1000最低遭赂,1000最高)。
解決方法:
/etc/sysctl.conf

vm.overcommit_memory=1 或者sysctl vm.overcommit_memory=1
或者
echo 1 > /proc/sys/vm/overcommit_memory
內(nèi)核參數(shù)說明如下:
overcommit_memory文件指定了內(nèi)核針對內(nèi)存分配的策略横辆,其值可以是0撇他、1、2。
0逆粹, 表示內(nèi)核將檢查是否有足夠的可用內(nèi)存供應(yīng)用進(jìn)程使用募疮;如果有足夠的可用內(nèi)存炫惩,內(nèi)存申請?jiān)试S僻弹;否則,內(nèi)存申請失敗他嚷,并把錯誤返回給應(yīng)用進(jìn)程蹋绽。 1, 表示內(nèi)核允許分配所有的物理內(nèi)存筋蓖,而不管當(dāng)前的內(nèi)存狀態(tài)如何卸耘。2, 表示內(nèi)核允許分配超過所有物理內(nèi)存和交換空間總和的內(nèi)存

redis數(shù)據(jù)同步

git clone https://github.com/CodisLabs/redis-port
cd redis-port
make
./bin/redis-port sync --from 10.168.22.140:6379 --filterdb=3 --target 10.251.241.246:19000

轉(zhuǎn)自: http://www.ilanni.com/?p=11524#五粘咖、連接codis集群

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蚣抗,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子瓮下,更是在濱河造成了極大的恐慌翰铡,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件讽坏,死亡現(xiàn)場離奇詭異锭魔,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)路呜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門迷捧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人胀葱,你說我怎么就攤上這事漠秋。” “怎么了抵屿?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵庆锦,是天一觀的道長。 經(jīng)常有香客問我晌该,道長肥荔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任朝群,我火速辦了婚禮燕耿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘姜胖。我一直安慰自己誉帅,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蚜锨,像睡著了一般档插。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上亚再,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天郭膛,我揣著相機(jī)與錄音,去河邊找鬼氛悬。 笑死则剃,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的如捅。 我是一名探鬼主播棍现,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼镜遣!你這毒婦竟也來了己肮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤悲关,失蹤者是張志新(化名)和其女友劉穎谎僻,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體坚洽,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡戈稿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了讶舰。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鞍盗。...
    茶點(diǎn)故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖跳昼,靈堂內(nèi)的尸體忽然破棺而出般甲,到底是詐尸還是另有隱情,我是刑警寧澤鹅颊,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布敷存,位于F島的核電站,受9級特大地震影響堪伍,放射性物質(zhì)發(fā)生泄漏锚烦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一帝雇、第九天 我趴在偏房一處隱蔽的房頂上張望涮俄。 院中可真熱鬧,春花似錦尸闸、人聲如沸彻亲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽苞尝。三九已至畸肆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間宙址,已是汗流浹背轴脐。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留曼氛,地道東北人豁辉。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像舀患,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子气破,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Codis 3.2 部署配置匯總 概念總結(jié) 集群配置前需要了解架構(gòu)聊浅,集群分片主要分三種: 客戶端分片:這個需要自己...
    三杯水Plus閱讀 5,999評論 0 11
  • 一. 應(yīng)用場景 redis 作為數(shù)據(jù)結(jié)構(gòu)存儲引擎,有著很多優(yōu)點(diǎn) 高性能單機(jī)引擎可以達(dá)到5-10W qps 數(shù)據(jù)結(jié)構(gòu)...
    skywalker閱讀 15,855評論 4 29
  • Redis常見集群技術(shù) 長期以來现使,Redis本身僅支持單實(shí)例低匙,內(nèi)存一般最多10到20GB。這無法支撐大型線上業(yè)務(wù)系...
    lijincheng閱讀 838評論 0 1
  • Codis高可用方案官方推薦使用Sentinel Redis 本身就是最終一致性的碳锈。Master 掛了顽冶,Promo...
    三杯水Plus閱讀 2,734評論 2 8
  • 先解釋何為群體。本書指的是心理學(xué)上的群體售碳,自身個性消失强重,有某種相同的強(qiáng)烈的感情或共同的目標(biāo)。幾個人可以構(gòu)成群體贸人,一...
    紛飛清揚(yáng)閱讀 105評論 0 0