一、redis代理升级模型
一般实际用第二种就行,第三种考虑到代理高可用的问题。
二、proxy主流技术
twemproxy
predixy
cluster(redis自带的)
codis
三、cluster
1.预分区模型
z轴问题并非只能从client端解决,也可以从代理层解决
如图,预分区的意思是总量数据区分为10份,如果原来只有2个客户端则一人分5份。如果拓展了新的客户端,2个客户端各取2份到新的客户端即可。
2.redis cluster模型
3.相关问题
1.数据是分治了,事务如何解决?
答案:相同事务的数据放在同一个分区中
如:
{ooxx}k1
{ooxx}k2
客户端可以决定只对{ooxx}取模,即可2个数据放在同一个分区中
四、cluster实操
redis 自带了创建cluster的工具,实操命令如下:
/root/soft/redis-6.2.6/utils
./create-cluster stop
./create-cluster clean
./create-cluster start
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-cli --cluster reshard 127.0.0.1:30001
2000
id
id
done
yes
redis-cli --cluster info 127.0.0.1:30001
redis-cli --cluster check 127.0.0.1:30001
五、twemproxy实操
git clone https://gitee.com/listao/twemproxy.git
yum install automake libtool -y
autoreconf -fvi
./configure --enable-debug=full
make
src/nutcracker -h
cd scripts
cp nutcracker.init
/etc/init.d/twemproxy
cd /etc/init.d/
mkdir /etc/nutcracker
cp ~/soft/twemproxy/twemproxy/conf/* /etc/nutcracker/
cp ~/soft/twemproxy/twemproxy/src/nutcracker /usr/bin
cp nutcracker.yml ./nutcracker.yum.bak(养成习惯,先拷贝)
只留下以下部分:
alpha:
listen: 127.0.0.1:22121
hash: fnv1a_64
distribution: ketama
auto_eject_hosts: true
redis: true
server_retry_timeout: 2000
server_failure_limit: 1
servers:
- 127.0.0.1:6379:1
- 127.0.0.1:6380:1
service twemproxy start
redis-cli -p 22121
如果有写错的地方,欢迎大家指正,感谢!