参考来源:https://www.bilibili.com/video/BV1Rv41177Af?p=36&spm_id_from=pageDriver
参考来源:https://www.bilibili.com/video/BV1Rv41177Af?p=36&spm_id_from=pageDriver
参考来源:https://www.bilibili.com/video/BV1Rv41177Af?p=36&spm_id_from=pageDriver
1、reids问题
2、redis集群
3、redis集群搭建
4、redis集群如何配置IP
5、solts解释
6、命令
7、故障恢复
8、缺点
1、redis问题
以前是代理的方式(需要8台),来一个请求看看它去哪里。后来是无中心化方式(推荐)
后来是无中心化方式(推荐):需要6台 。请求到订单,不是订单处理,则转义到用户,不是用户处理,用具就转义到商品
2、redis集群
3、redis集群搭建
1)配置文件
1、进入redis目录,编译 make 安装 make install
[root@centos701 redis-6.0.10]# make
[root@centos701 redis-6.0.10]# make install
2、创建cluster目录,并在其下创建7001 7002 7003 7004 7005 7006 目录
[root@centos701 redis-6.0.10]# mkdir -p cluster
[root@centos701 cluster]# mkdir -p 700{1..6}
3、将redis.cnf复制到cluster/7001路径下
4、修改配置redis.conf
(1)取消绑定ip、注释掉 bind 127.0.0.1
(2)取消结点保护(yes 改为no) protected-mode yes
(3)修改端口为7001 port 6379
(4)开启后台运行改为yes daemonize no
(5)修改pid路径 pidfile /var/run/redis_6379.pid 改为 pidfile /var/run/redis_7001.pid
(6)数据淘汰策略 allkeys-lru (所有的数据都参与)# maxmemory-policy noeviction 改为 maxmemory-policy allkeys-lru
(7)redis集群设置开启 # cluster-enabled yes
(8)开启并修改 # cluster-config-file nodes-6379.conf 改为 cluster-config-file nodes-7001.conf
(9)开启超时 # cluster-node-timeout 15000 改为 cluster-node-timeout 15000
(10)保存
5、创建其他的conf
将7001 改为7002\7003\7004\7005\7006
复制到对应的目录下6、[root@centos701 src]# cd /root/redis-6.0.10/src
[root@centos701 src]# touch wystart.sh
[root@centos701 src]# chmod +x wystart.sh
#!/bin/sh
./redis-server /root/redis-6.0.10/cluster/7001/redis.conf
./redis-server /root/redis-6.0.10/cluster/7002/redis.conf
./redis-server /root/redis-6.0.10/cluster/7003/redis.conf
./redis-server /root/redis-6.0.10/cluster/7004/redis.conf
./redis-server /root/redis-6.0.10/cluster/7005/redis.conf
./redis-server /root/redis-6.0.10/cluster/7006/redis.conf
#启动脚本
[root@centos701 src]# ./wystart.sh
[root@centos701 src]# ps -ef | grep redis7、创建节点
./redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 --cluster-replicas 1输入Can I set the above configuration? (type 'yes' to accept): yes #提示如下则成功
[OK] All 16384 slots covered.
2)以集群模式进入集群
[root@centos701 src]# ./redis-cli -p 7001 -c
127.0.0.1:7001> cluster nodes
419ed1664a82901966b9e1f71c8111f9c35018f4 127.0.0.1:7001@17001 myself,master - 0 1620136267000 1 connected 0-5460
769db498cbf60257639d72630661023eb0512947 127.0.0.1:7004@17004 slave 419ed1664a82901966b9e1f71c8111f9c35018f4 0 1620136267000 1 connected
a6af9abdf65227ef74c5f1b267e745635f27eb72 127.0.0.1:7002@17002 master - 0 1620136267625 2 connected 5461-10922
47bf150cf8d6c30a634fa2879948e391994ada7e 127.0.0.1:7006@17006 slave 27e040a4f7f3ded230e5e052bf676f8e20288464 0 1620136267000 3 connected
27e040a4f7f3ded230e5e052bf676f8e20288464 127.0.0.1:7003@17003 master - 0 1620136269645 3 connected 10923-16383
3d8b28011265a48681e077eed6dd3ffda1394db9 127.0.0.1:7005@17005 slave a6af9abdf65227ef74c5f1b267e745635f27eb72 0 1620136268635 2 connected
127.0.0.1:7001>
4、redis集群如何配置IP
5、solts解释
1、set key value # 会计算key这个值应该是哪个插槽,将该key分配给具体的插槽。
2、mset k1 v1 k2 v2 k3 v3 #同时操作多个值会有问题。可以使用组的形式将数据插入。
127.0.0.1:7001> mset k1 v1 k2 v2 k3 v3 #mset插入
(error) CROSSSLOT Keys in request don't hash to the same slot
127.0.0.1:7001> mset k1{user} v1 k2{user} v2 k3{user} v3 #组形式插入
-> Redirected to slot [5474] located at 127.0.0.1:7002
OK
127.0.0.1:7002>
6、命令
127.0.0.1:7002> cluster keyslot k1 # 计算k1的插槽值
127.0.0.1:7002> cluster countkeysinslot 12706 #计算 插槽值12706中有多少值 在7001上只能看0-5460 的插槽值,其他的看不了
127.0.0.1:7001> cluster getkeysinslot 4576 10 # 返回插槽值4576 中的10个值
7、故障恢复
1、7001主机挂掉,则7001的从机升为主机作为master继续对外提供服务。7001启动之后作为从机
2、7001的主机和从机都挂掉了。
# cluster-require-full-coverage yes #配置为yes则一段插槽的主从挂掉,则整个集群都挂掉了
# cluster-require-full-coverage yes #配置为no则一段插槽的主从挂掉,则整个主从负责的插槽不可以继续工作。不可工作不可存储
8、缺点