• Redis | 一文轻松搞懂redis集群原理及搭建与使用


    转载:https://juejin.im/post/5ad54d76f265da23970759d3

    作者:SnailClimb

    这里总结一下redis集群的搭建以便日后所需同时也希望能对你有所帮助。

    笔主这里使用的是Centos7

    一 redis的安装

    Redis是c语言开发的。

    安装redis需要c语言的编译环境。如果没有gcc需要在线安装:yum install gcc-c++

    第一步:获取源码包:wget http://download.redis.io/releases/redis-3.0.0.tar.gz

    第二步:解压缩redis:tar zxvf redis-3.0.0.tar.gz

    第三步:编译。进入redis源码目录(cd redis-3.0.0)。执行 make

    第四步:安装。make install PREFIX=/usr/local/redis

    PREFIX参数指定redis的安装目录。一般软件安装到/usr目录下

    这样Redis就成功装在了我们的usr/local/redis目录下。

    第五步:设置后台启动:

    [root@localhost redis-3.0.0]# cp redis.conf /usr/local/redis/bin/

    (把/root/redis-3.0.0/redis.conf复制到/usr/local/redis/bin目录下)

    修改配置文件:把daemonize后面的参数改为yes

    一文轻松搞懂redis集群原理及搭建与使用

    测试启动:[root@localhost bin]# ./redis-server redis.conf

    查看redis进程:[root@localhost bin]# ps aux|grep redis

    二 redis集群的搭建

    2.1 redis集群(redis-cluster)原理

    3.0版本之前的redis是不支持集群的,3.0版本之前想要搭建redis集群的话需要中间件来找到存值和取值的对应节点。

    3.0版本以后的redis集群架构图:

    一文轻松搞懂redis集群原理及搭建与使用


    那么这是如何实现的呢???

    Redis 集群中内置了 16384个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点。

    根据下图应该更容易理解了。(图片来源:http://www.cnblogs.com/liyasong/p/redis_jiqun.html)

    一文轻松搞懂redis集群原理及搭建与使用


    redis集群投票机制

    redis集群中有多台redis服务器不可避免会有服务器挂掉。redis集群服务器之间通过互相的ping-pong判断是否节点可以连接上。如果有一半以上的节点去ping一个节点的时候没有回应,集群就认为这个节点宕机了。

    上面就是我们常说的为了容错而生的redis集群投票机制

    一文轻松搞懂redis集群原理及搭建与使用


    2.2 redis集群(redis-cluster)的搭建

    redis集群搭建起来很简单,我们这里用一台虚拟机模拟搭建包含6个redis服务器的集群,实际工作中与使用多台服务器搭建是一个操作。

    我们上面已经装好了一个redis实例,现在我们需要把它复制6份并修改相应端口。

    第一步: 新建redis-cluster文件夹

    一文轻松搞懂redis集群原理及搭建与使用


    第二步:复制redis实例

    [root@Snailclimb local]# cp redis/bin redis-cluster/redis1

    如果你复制过去的redis实例有dump.rdb文件的话最好也要删除。

    一文轻松搞懂redis集群原理及搭建与使用


    第三步:修改配置文件

    修改bin目录下的redis.conf配置文件

    一文轻松搞懂redis集群原理及搭建与使用


    第四步:继续复制5个redis实例

    我们用上面的redis实例复制5个redis实例,然后把他们的配置文件的端口号改为7002-7006

    一文轻松搞懂redis集群原理及搭建与使用


    第五步 :新建一个执行脚本:

    [root@Snailclimb redis-cluster]# vim start-all.sh

    脚本内容如下:

    一文轻松搞懂redis集群原理及搭建与使用

    为脚本赋予执行权限:

    [root@Snailclimb redis-cluster]# chmod u+x start-all.sh

    同时启动6个redis实例:

    [root@Snailclimb redis-cluster]# ./start-all.sh

    第六步:将redis-trib.rb复制到redis-cluster目录下面:

    一文轻松搞懂redis集群原理及搭建与使用

    并为脚本赋予执行权限:[root@Snailclimb redis-cluster]# chmod u+x redis-trib.rb

    第七步:安装ruby和ruby运行环境

    yum install ruby

    yum install rubygems

    gem install redis-3.0.0.gem

    第八步:使用ruby脚本搭建集群:

    [root@Snailclimb redis-cluster]#./redis-trib.rb create --replicas 1 192.168.25.155:7001 192.168.25.155:7002 192.168.25.155:7003 192.168.25.155:7004 192.168.25.155:7005 192.168.25.155:7006

    查看集群:

    一文轻松搞懂redis集群原理及搭建与使用

    注意:端口修改错误或者没有将cluster-enabled yes前的注释去掉都会导致集群搭建失败。总的来说,redis集群搭建还是很简单的。

    这样一个完整的redis集群就已经搭建完毕了。。。

    三 redis单机版与集群版的测试使用

    添加Maven依赖:

    一文轻松搞懂redis集群原理及搭建与使用


    单机版redis测试:

    一文轻松搞懂redis集群原理及搭建与使用


    使用连接池测试单机版redis:

    一文轻松搞懂redis集群原理及搭建与使用

    测试集群版redis:

    一文轻松搞懂redis集群原理及搭建与使用

    四 如何在JavaWeb项目中实现单机和集群无缝切换使用

    我们如何才能在项目中实现自己想用的单机redis就用单机redis想用redis集群就用redis集群而不要修改项目代码呢???

    创建相应类和接口

    一文轻松搞懂redis集群原理及搭建与使用

    接口:

    一文轻松搞懂redis集群原理及搭建与使用


    集群版使用:

    一文轻松搞懂redis集群原理及搭建与使用

    一文轻松搞懂redis集群原理及搭建与使用

    单机版使用:

    一文轻松搞懂redis集群原理及搭建与使用

    一文轻松搞懂redis集群原理及搭建与使用


    applicationContext-redis.xml

    一文轻松搞懂redis集群原理及搭建与使用


    测试代码:

    一文轻松搞懂redis集群原理及搭建与使用

    这样在实际项目中我们无需修改代码就可以实现单机和集群版的相关切换。。

  • 相关阅读:
    报数游戏
    Dynamics CRM 2013 初体验(2):UI
    Lucene.net常见功能实现知识汇总
    hdu 1853 最小费用流好题 环的问题
    MessagerService总结
    [置顶] Android EditText/TextView使用SpannableString显示复合文本
    MySQL Dll语句
    JavaScript表单验证
    intellij—idea14 注冊机
    OL记载Arcgis Server切片
  • 原文地址:https://www.cnblogs.com/wyf0518/p/11461911.html
Copyright © 2020-2023  润新知