安装环境:centos7,redis6
twemproxy
浏览twemproxy的github官方网站,阅读里面的readme
-
使用git clone https://github.com/twitter/twemproxy.git 下载源码
-
cd twemproxy ,执行autoreconf 命令的时候提示没有该命令,根据README里面的信息,需要安装automake和libtool
-
安装 automake和libtool
-
执行 autoreconf -fvi
查看目录,可以看到多了个configure 可执行文件
- 执行 ./configure --enable-debug=full
成功执行后可以看到 Makefile,前面一系列操作都是为了获取Makefile 文件,执行make 操作
-
执行make 操作,成功执行后,在src目录下多了个执行文件
-
查看scripts/nutcracker.init 的文件
cp nutcracker.init /etc/init.d/twemproxy & cd /etc/init.d/ & chmod +x twemproxy
服务启动的时候需要执行这个脚本根据nutcracker.init 里面的 ,需要创建/etc/nutcracker 目录,并添加nutcraker.yml 文件
在 /twemproxy/conf目录下把 nutcraker.yml 文件拷贝过去
cp nutcracker.yml /etc/nutcraker/
cp src/nutcracker /usr/bin 把可执行命令拷贝到bin下面,就可以在任何目录下执行 nutcracker 命令了
-
编辑/etc/nutcracker/nutcraker.yml 文件
启动相应的redis服务
-
使用 service twemproxy start 启动服务 ,因为前面把nutcraker 改名成twemproxy 了。
-
使用redis-cli 命令连接代理服务器ip端口
使用命令验证
-
总结
可以加上hash_tag 的标签,让标签里面一下的key,可以到同一个redis实例中,twemproxy 做代理的时候事务不支持,有一些聚合命令也不支持:keys * ,PSUBSCRIBE * 等
predixy
支持redis sentinel 和redis cluster
下载编译好的tar包
# 下载
wget https://github.com/joyieldInc/predixy/releases/download/1.0.5/predixy-1.0.5-bin-amd64-linux.tar.gz
# 解压缩
tar xf predixy-1.0.5-bin-amd64-linux.tar.gz
-
修改/conf/predixy.conf 配置文件
-
配置sentinel 模式,修改sentinel.conf 的配置文件
里面 Group 的名称应该要和redis sentinel 的名称一样
启动3个redis sentinel 服务
redis-server /root/soft/sentinel/26379.conf --sentinel
redis-server /root/soft/sentinel/26380.conf --sentinel
redis-server /root/soft/sentinel/26381.conf --sentinel
- 启动4条redis server 服务,两主两从
redis-server --port 36379
redis-server --port 36380 --replicaof 127.0.0.1 36379
redis-server --port 46379
redis-server --port 46380 --replicaof 127.0.0.1 46379
- 启动predixy 服务
./predixy ../conf/sentinel.conf
- 使用redis-cli 客户端口连接 predixy 代理
redis-cli -p 7617
- 总结
predixy 代理只支持单sentinel 的事务 ,多个sentinel 不支持事务
redis cluster
进到源码包中utils/create-cluster目录下,使用create-cluster 快速启动redis cluster 实例,
使用 ./create-cluster start 创建6个redis实例
-
使用 ./create-cluster create 分配槽位
使用redis-cli 进行连接
redis-cli -c -p 30001
- 停止和清除
./create-cluster stop
./create-cluster clean
- 启动6台服务后,需要使用命令来创建集群
redis-cli --cluster create 127.0.0.1:30001 127.0.0.1:30002 127.0.0.1:30003 127.0.0.1:30004 127.0.0.1:30005 127.0.0.1:30006 --cluster-replicas 1
- 总结
redis cluster 模式中只要事务中的key在同一条机器上,就可以正常执行