1、安裝redis。
2、在一臺機器上搭建多個redis實例
需要啓動多個Redis實例:
一臺Redis服務器,分成多個節點,每個節點分配一個端口(6380,6381…),默認端口是6379。
每個節點對應一個Redis配置文件,如: redis6380.conf、redis6381.conf
#cp redis.confredis6380.conf
#vi redis6380.conf
pidfile : pidfile/var/run/redis/redis_6380.pid
port 6380
logfile : logfile/var/log/redis/redis_6380.log
rdbfile : dbfilenamedump_6380.rdb
(其他配置文件類似修改)
啓動多個redis實例:
#redis-server /usr/local/redis/redis6380.conf
#redis-server /usr/local/redis/redis6381.conf
3、啓動上一步配置的實例。
4、安裝twemproxy 。
$ git clone [email protected]:twitter/twemproxy.git
$ cd twemproxy
$ autoreconf -fvi
$ ./configure --enable-debug=full
$ make
$ src/nutcracker -h
5、添加位置文件:/usr/local/twemproxy/conf/nutcracker.yml
beta:
listen: 127.0.0.1:22122
hash: fnv1a_64
hash_tag: "{}"
distribution: ketama
auto_eject_hosts: false
timeout: 400
redis: true
servers:
- 127.0.0.1:6379:1 server1
- 127.0.0.1:6380:1 server2
- 127.0.0.1:6381:1 server3
6、啓動twemproxy服務。
nutcracker -t 測試配置文件
nutcracker -d -c /usr/local/twemproxy/conf/nutcracker.yml -p /usr/local/twemproxy/run/redisproxy.pid -o /usr/local/twemproxy/run/redisproxy.log
7、測試twemproxy:
src/redis-cli -p 22122
127.0.0.1:22122> get aaa
(nil)
127.0.0.1:22122> set aaa 888
OK
127.0.0.1:22122> get aaa
"888"
測試ok。
7、性能測試
這裏使用redis自帶的redis-benchmark進行簡單的性能測試,測試結果如下:
Set測試:
通過twemproxy測試:
src/redis-benchmark -h 127.0.0.1 -p 22122 -c 100 -t set -d 100 -l -q
SET: 42808.22 requests per second
直接對後端redis測試:
src/redis-benchmark -h 127.0.0.1 -p 6379 -c 100 -t set -d 100 -l -q
SET: 62578.22 requests per second
Get測試:
通過twemproxy測試:
src/redis-benchmark -h 127.0.0.1 -p 22122 -c 100 -t get -d 100 -l -q
GET: 39169.61 requests per second
直接對後端redis測試:
src/redis-benchmark -h 127.0.0.1 -p 6379 -c 100 -t get -d 100 -l -q
GET: 57736.72 requests per second
查看鍵值分佈:
redis-cli info|grep db0
db0:keys=50141,expires=0,avg_ttl=0
redis-cli info|grep db0
db0:keys=50868,expires=0,avg_ttl=0
測試結果:以基本的set get命令通過twemproxy性能下降有點嚴重,據官網說明性能下降20%左右,具體原因還在分析;通過twemproxy分佈基本平均。實際測試數據以業務測試爲準。