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 git@github.com: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分布基本平均。实际测试数据以业务测试为准。