一、Redis适合做企业级分布式缓存集群的条件

  1.Redis内置哈希槽,有16384个哈希槽(0~16383),根据CRC16算法来确定这个集群中属于哪一个服务器来处理这个请求。

  2.Redis提供一个集群管理工具:redis-trib,调度这些集群搭建,将这个集群中的每一组redis服务器联系起来。

二、Redis集群原理 

  Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点。集群的每个节点负责一部分hash槽。这种结构很容易添加或者删除节点,并且无论是添加删除或者修改某一个节点,都不会造成集群不可用的状态。使用哈希槽的好处就在于可以方便的添加或移除节点。当需要增加节点时,只需要把其他节点的某些哈希槽挪到新节点就可以了;当需要移除节点时,只需要把移除节点上的哈希槽挪到其他节点就行了;在这一点上,我们以后新增或移除节点的时候不用先停掉所有的 redis 服务。

三、集群搭建

  1.在/usr/java中新建cluster文件夹,然后在cluster文件夹中新建 1000 1001 2000 2001 3000 3001文件夹

    cd /usr/java
    mkdir cluster
    cd cluster
    mkdir 1000 1001 2000 2001 3000 3001

  2.将redis.conf分别拷贝到1000 1001 2000 2001 3000 3001文件夹中

  3.修改redis.conf文件中的

    port 1000       //端口1000 1001 2000 2001 3000 3001
    bind 本机ip      //默认ip为127.0.0.1,需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群
    daemonize yes    //redis后台运行
    pidfile /usr/java/cluster/1000/redis.pid    //pidfile文件的位置,1000文件夹可以更换
    logfile /usr/java/cluster/1000/redis.log    //日志位置,1000文件夹可以更换
    cluster-enabled yes                 //开启集群
    cluster-config-file /usr/java/cluster/1000/nodes.conf   //集群的配置
    cluster-node-timeout 15000        //请求超时 默认15秒,可自行设置
    appendonly yes            //aof日志开启 有需要就开启,它会每次写操作都记录一条日志 

  4.安装ruby,都说必须要安装ruby2.0以上的,2.0以上自带rubygems包管理器,但我这里安装的是1.8.7,一样也可以。

    1)yum install ruby
    2)yum install rubygems 安装rubygems包管理器
    3)gem install redis gem命令安装redis包,增加redis-trib.rb调用redis的接口包

  5.将redis中的src文件夹下的 redis-trib.rb 拷贝到 /usr/local/bin 中,启动redis集群的时候,就不需要 进入到redis/src目录中了

  6.启动redis集群,

    redis-trib.rb create --replicas 1 192.168.242.130:1000  192.168.242.130:2000  192.168.242.130:3000 192.168.242.130:1001  192.168.242.130:2001  192.168.242.130:3001.

     其中,--replicas 1 设置从节点个数,前三个是master,后三个是slave.

  7.查看redis进程,ps -ef|grep redis

  8.客户端连接,这里连接redis集群 要使用 redis-cli -c -h –p,其中 -c代表集群模式

    redis-cli -c -h 192.168.242.130 -p 1000

  9.查看集群是否成功:cluster info

  10.当在1000中set值后,会看到自动切换到 3000,这是因为 刚刚 set的数据 落到了 3000中。

  

最新文章

  1. 【转】oracle 中随机取一条记录的两种方法
  2. C语言程序设计第九次作业
  3. nginx入门篇----负载均衡策略
  4. 只用一行代码让你的ASP.NET MVC 跑起来
  5. winfrom中DataGridView绑定数据控件中DataGridViewCheckBoxColumn怎么选中
  6. 使用6to5,让今天就来写ES6的模块化开发!
  7. tomcat server.xml配置详解
  8. Android四大组件之BroadcastReceiver
  9. 编程中的 if ()else() 语句
  10. keil C51绝对地址访问
  11. Robot Framework学习资料
  12. ubuntu ssh 防止登陆断开
  13. ReentrantReadWriteLock读写锁的使用1
  14. MySQL 基础知识梳理学习(六)----锁
  15. ZOJ Problem Set - 3708 Density of Power Network
  16. windows下安装GIT,使用GIT GUI 上传文件到github
  17. MyBatis SpringMVC映射配置注意
  18. Python学习记录之----网络通信(一)
  19. java连接数据库以及连接参数格式
  20. oracle改进之将阿拉伯数字转换成中文数字

热门文章

  1. python生成二维数组
  2. iOS UITableView中关于cell里的按钮被点击时如何确定是哪一个section
  3. JS地毯式学习一
  4. 【C#】List列表的深复制,引用类型深复制
  5. 【WPF】C#代码动态改变控件的样式
  6. mysql中使用正则表达式查询
  7. java日期工具类DateUtil
  8. ThreadStart中如何带参数
  9. maven打包源码<转>
  10. Tomcat性能优化之(一) 启动GZIP压缩