当前位置: 代码迷 >> 综合 >> 17-Redis6-集群模式
  详细解决方案

17-Redis6-集群模式

热度:68   发布时间:2023-10-24 06:51:39.0

参考来源: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台),来一个请求看看它去哪里。后来是无中心化方式(推荐)

17-Redis6-集群模式

后来是无中心化方式(推荐):需要6台    。请求到订单,不是订单处理,则转义到用户,不是用户处理,用具就转义到商品

17-Redis6-集群模式

2、redis集群

17-Redis6-集群模式

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

17-Redis6-集群模式

 

5、solts解释

17-Redis6-集群模式

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、缺点

17-Redis6-集群模式