技术开发 频道

手把手教你如何来搭建一个Redis 集群?

  【IT168 评论】一.为什么使用redis?

  redis是一种典型的no-sql,工作在内存中,这就意味着它的读写效率是非常高的。所以大数据量的访问导致db的压力增大,所以为了业务的稳定,需要在db层上使用多级的redis提供缓冲区

  二.为什么使用redis-cluster?

  redis是一个内存数据库,这就意味着单个redis数据库的容量不能超过服务器的内存。所以对于大数据量的应用,就需要将数据分散到多台机器上,redis3.0版本以上开始支持cluster 。

  三.redis-cluster实现原理?

  redis-cluster采用的是hash slot(hash槽)[0-16383]slot,把多个redis实例整合到一起,形成一个集群。redis-cluster是一个无中心的结构,每个节点都保存其它节点的状态和它负责的槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点

手把手教你如何来搭建一个Redis 集群?

  四.redis的投票和容错

  1.投票:

  当一个节点发现某个节点ping-pong不通,就会向其它节点广播该节点可能发生的错误,所有节点对该节点进行检测,超过半数,则认为该节点挂掉

  2.容错

  容错采用主备策略,master挂掉,slave立即接替工作

  3.什么时候整个集群不可用?

  a.集群中任意master挂掉,且没有slave。集群进入fail状态b.集群超过半数以上的master挂掉,无论是否有slave都进入fail状态

  五.redis-cluster的搭建

  集群中有三个节点的集群,每个节点有一主一备。需要6台虚拟机。搭建一个伪分布式的集群,使用6个redis实例来模拟。

  1.安装ruby环境

  yum install ruby//ruby运行环境yum install rubygems//ruby包管理器将redis-3.0.0.gem上传到服务器(redis-trib.rb运行需要依赖的包)

  gem installe redis-3.0.0.gem(安装该依赖包)

  2.搭建集群

  (1)拷贝bin

  mkdir redis-cluster cd redis

  cp -r bin ../redis-cluster/redis01 //拷贝

  (2)配置文件修改

  cd ../redis-cluster/redis01/rm -f dump.rdb (删除快照文件)

  vim redis.conf

  修改:

  port 7001cluster-enabled yes

  (3)创建六个节点

  cp -r redis01/ redis02(一直改到6)vim redis02/redis.conf(分别改端口号)

  (4)拷贝集群脚本到集群目录下

  cd redis-3.0.0/src

  cp *.rb /usr/local/redis-cluster/

  (5)运行6个redis实例

  vim startall.shcd redis01

  ./redis-server redis.confcd ..cd redis02

  ./redis-server redis.confcd ..cd redis03

  ./redis-server redis.confcd ..cd redis04

  ./redis-server redis.confcd ..cd redis05

  ./redis-server redis.confcd ..cd redis06

  ./redis-server redis.confcd ..

  ./startall.sh

  (6)创建集群

  ./redis-trib.rb create --replicas 1 192.168.25.153:7001 192.168.25.153:7002 192.168.25.153:7003192.168.25.153:7004 192.168.25.153:7005 192.168.25.153:7006

  六.测试集群

  redis01/redis-cli -h 47.94.148.93 -p 7002 -c

0
相关文章