当前位置:   article > 正文

Redis-cluster原理和实践_redis cluster集群获取值

redis cluster集群获取值

Redis-cluster原理

1.概念原理

         Redis 集群采用了P2P的模式,完全去中心化。Redis 把所有的 Key 分成了 16384 个 slot(哈希槽),每个 Redis 实例负责其中一部分 slot(哈希槽) 。集群中的所有信息(节点、端口、slot等),都通过节点之间定期的数据交换而更新。Redis 客户端可以在任意一个 Redis 实例发出请求,如果所需数据不在该实例中,通过重定向命令引导客户端访问所需的实例。
       当我们的存取的key到达的时候,redis会根据crc16的算法得出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,通过这个值,去找到对应的插槽所对应的节点,然后直接自动跳转到这个对应的节点上进行存取操作。

2.原理图

在这里插入图片描述

Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。集群很好的吸收了主从复制和哨兵模式的优点,redis cluster
为了保证数据的高可用性,加入了主从和哨兵模式,一个主节点对应一个或多个从节点,主节点提供数据存取,从节点则是从主节点拉取数据备份,当这个主节点挂掉后,就会有这个从节点选取一个来充当主节点,从而保证集群不会挂掉。

注意:其中一个主节点和它的所有从节点都挂掉的情况下,整个集群就无法正常访问(实质:挂掉的主节点所占哈希槽内的数据无法插入和修改,其他正常主节点还是可以使用的,但是意义不大)

3.集群搭建

集群搭建:最好奇数个,最少大于等于3,我们搭建三主三从。
三主三从:

192.168.223.120 从
192.168.223.131 从
192.168.223.135 主
192.168.223.140 从
192.168.223.141 主
192.168.223.142  主
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述

3.1安装相关环境

每个环境都安装执行这个命令

mkdir /usr/local/redis-cluster
cd /usr/local/redis-cluster
tar -zxvf redis-3.2.9.tar.gz
cd redis-3.2.9
make
cd src
make install PREFIX=/usr/local/redis-cluster
cd ../
mkdir /usr/local/redis-cluster/etc
mv redis.conf /usr/local/redis-cluster/bin/
cd /usr/local/redis-cluster/redis-3.2.9/src
cp redis-trib.rb /usr/local/redis-cluster/
cd /usr/local/redis-cluster/bin/
yum install ruby
yum install rubygems
yum install -y rubygems 
gem install -l redis-3.2.1.gem
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

每个环境修改redis.conf

bind 0.0.0.0 #远程连接
daemonize yes # 守护进程
appendonly yes
cluster-enabled yes #开启集群模式
cluster-config-file nodes-6379.conf #nodes-6379.conf 和端口号匹配
cluster-node-timeout 15000
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

每个环境都启动

cd /usr/local/redis-cluster/bin/
./redis-server  redis.conf
  • 1
  • 2

在其中一个环境执行命令,开始创建管理集群

./redis-trib.rb create --replicas 1 192.168.223.120:6379 192.168.223.135:6379 192.168.223.141:6379 192.168.223.142:6379 192.168.223.131:6379 192.168.223.140:6379
  • 1
集群相关操作

1.查看集群情况

./redis-trib.rb check 192.168.223.142:6379
  • 1

在这里插入图片描述
2.连接集群

./redis-cli -c -h 127.0.0.1 -p 6379
  • 1

3.插入值和获取值
从下图就可以看出,插入值时,经过CRC16算法不在当前节点,则重定向到相应的节点,获取值也一样
在这里插入图片描述
springboot整合redis-cluster集群

spring:
  redis:
    database: 0
    jedis:
      pool:
        max-active: 8
        max-wait: -1
        max-idle: 8
        min-idle: 0
    timeout: 10000
    cluster:
      nodes:
        - 192.168.223.120:6379
        - 192.168.223.131:6379
        - 192.168.223.135:6379
        - 192.168.223.135:6380
        - 192.168.223.140:6379
        - 192.168.223.141:6379
        - 192.168.223.142:6379
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/684360
推荐阅读
相关标签
  

闽ICP备14008679号