twemproxy是twitter开发的一个redis代理proxy
一:redis的安装
wget http://download.redis.io/releases/redis-3.0.0.tar.gz
tar -xvf redis-3.0.0.tar.gz
cd redis-3.0.0
make
vim redis.conf
修改如下三处
daemonize yes
pidfile /tmp/redis7001.pid
port 7001
然后,把这个redis拷贝三份
端口分别为:7001,7002,7003
为了方便启、关闭动这三个redis
写了两个脚本
redis@redispc:~$ cat start_all.sh
#!/bin/sh
/home/redis/redis7001/src/redis-server /home/redis/redis7001/redis.conf
/home/redis/redis7002/src/redis-server /home/redis/redis7002/redis.conf
/home/redis/redis7003/src/redis-server /home/redis/redis7003/redis.conf
redis@redispc:~$ cat stop_all.sh
#!/bin/sh
/home/redis/redis7001/src/redis-cli -p 7001 shutdown
/home/redis/redis7002/src/redis-cli -p 7002 shutdown
/home/redis/redis7003/src/redis-cli -p 7003 shutdown
redis@redispc:~$
二:twemproxy的安装
先安装autoconf(apt-get install autoconf)
twemproxy下载地址:https://codeload.github.com/twitter/twemproxy/zip/master
cd twemproxy
autoreconf -fvi
./configure --prefix=/usr/local/twemproxy
make -j 8
make install
cd /usr/local/twemproxy
mkdir conf
cd conf
vim nutcracker.yml
redis1:
listen: 0.0.0.0:8888 #使用哪个端口启动Twemproxy
redis: true #是否是Redis的proxy
hash: fnv1a_64 #指定具体的hash函数
distribution: ketama #具体的hash算法
auto_eject_hosts: true #是否在结点无法响应的时候临时摘除结点
timeout: 400 #超时时间(毫秒)
server_retry_timeout: 3000 #重试的时间(毫秒)
server_failure_limit: 1 #结点故障多少次就算摘除掉
servers: #下面表示所有的Redis节点(IP:端口号:权重)
- 127.0.0.1:7001:1
- 127.0.0.1:7002:1
- 127.0.0.1:7003:1
三:启动
sh start_all.sh 启动三个redis
nutcracker -d -c /usr/local/twemproxy/conf/nutcracker.yml 启动twemproxy
四:测试
public class App
{
public static void main( String[] args )
{
Jedis jedis = new Jedis("192.168.1.108", 8888);
for(int i=1;i<=10;i++)
{
jedis.set("show_"+i, "CMCC"+i);
}
jedis.close();
}
}
之后,
redis-cli -p 7001 执行 keys *
redis-cli -p 7002 执行 keys *
redis-cli -p 7003 执行 keys *
发现10条数据已经分布在不同的redis上了