1. RedisCluster
    2.1 Redis-Cluster简介
    2.1.1 什么是 Redis-Cluster
    为何要搭建 Redis 集群。Redis 是在内存中保存数据的,而我们的电脑一般内存都不大, 这也就意味着 Redis 不适合存储大数据,适合存储大数据的是 Hadoop 生态系统的 Hbase 或者是 MogoDB。Redis 更适合处理高并发,一台设备的存储能力是很有限的,但是多台设备协同合作,就可以让内存增大很多倍,这就需要用到集群。

Redis 集群搭建的方式有多种,例如使用客户端分片、Twemproxy、Codis 等,但从redis 3.0 之后版本支持 redis-cluster 集群,它是 Redis 官方提出的解决方案, Redis-Cluster 采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。其 redis-cluster 架构图如下:

客户端与 redis 节点直连,不需要中间 proxy 层.客户端不需要连接集群所有节点连接集群中任何一个可用节点即可。

所有的 redis 节点彼此互联(PING-PONG 机制),内部使用二进制协议优化传输速度和带
宽.
2.1.1 分布存储机制-槽
(1) redis-cluster 把所有的物理节点映射到[0-16383]slot 上,cluster 负责维护

node<->slot<->value

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

SERVER1:
0-5460
SERVER2:
5461-10922
SERVER3:
10923-16383

2.1.2 容错机制-投票
(1)选举过程是集群中所有 master 参与,如果半数以上 master 节点与故障节点通信超过(cluster-node-timeout),认为该节点故障,自动触发故障转移操作. 故障节点对应的从节点自动升级为主节点
(2)什么时候整个集群不可用(cluster_state:fail)?

如果集群任意 master 挂掉,且当前 master 没有 slave.集群进入 fail 状态,也可以理解成集群的 slot 映射[0-16383]不完成时进入 fail 状态.

4.2 搭建 Redis-Cluster4.2.1 搭建要求
需要 6 台 redis 服务器。搭建伪集群。需 要 6 个 redis 实 例 。
需要运行在不同的端口 7001-7006

4.2.2 准备工作
(1)安装 gcc 【此步省略】
Redis 是 c 语言开发的。安装 redis 需要 c 语言的编译环境。如果没有 gcc 需要在线安装。

yum install gcc-c++
(2)使用 yum 命令安装 ruby (我们需要使用 ruby 脚本来实现集群搭建)【此步省略】

yum install ruby
yum install rubygems
Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言,在 20 世纪 90 年代由日本人松本行弘
(Yukihiro Matsumoto)开发,遵守 GPL协议和 Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel
Ada以及 Lisp语言。由 Ruby 语言本身还发展出了 JRuby(Java 平台)、IronRuby(.NET平台)等其
他平台的 Ruby 语言替代品。Ruby 的作者于 1993 年 2 月 24 日开始编写 Ruby,直至 1995 年 12 月才正
式公开发布于 f(j 新闻组)。因为 Perl 发音与 6 月诞生石 pear(l 珍珠)相同,因此 Ruby 以 7 月诞生石 ruby

file:///C:\Users\user\AppData\Local\Temp\ksohtml\wps71AB.tmp.pngfile:///C:\Users\user\AppData\Local\Temp\ksohtml\wps71AC.tmp.pngfile:///C:\Users\user\AppData\Local\Temp\ksohtml\wps71AD.tmp.png
Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言,在 20 世纪 90 年代由日本人松本行弘
(Yukihiro Matsumoto)开发,遵守 GPL协议和 Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel
Ada以及 Lisp语言。由 Ruby 语言本身还发展出了 JRuby(Java 平台)、IronRuby(.NET平台)等其
他平台的 Ruby 语言替代品。Ruby 的作者于 1993 年 2 月 24 日开始编写 Ruby,直至 1995 年 12 月才正
式公开发布于 f(j 新闻组)。因为 Perl 发音与 6 月诞生石 pear(l 珍珠)相同,因此 Ruby 以 7 月诞生石 ruby

file:///C:\Users\user\AppData\Local\Temp\ksohtml\wps71AE.tmp.pngfile:///C:\Users\user\AppData\Local\Temp\ksohtml\wps71BF.tmp.png(3)将 redis 源码包上传到 linux 系统 ,解压 redis 源码包

(4)编译 redis 源码 ,进入 redis 源码文件夹
make

看到以下输出结果,表示编译成功

(5)创建目录/usr/local/redis-cluster 目录 安装 6 个 redis 实例,分别安装在以下目录

/usr/local/redis-cluster/redis-1

/usr/local/redis-cluster/redis-2

/usr/local/redis-cluster/redis-3

/usr/local/redis-cluster/redis-4

/usr/local/redis-cluster/redis-5

/usr/local/redis-cluster/redis-6

以第一个 redis 实例为例,命令如下
make install PREFIX=/usr/local/redis-cluster/redis-1


出现此提示表示成功,按此方法安装其余 5 个 redis 实例
(6)复制配置文件 将 /redis-3.0.0/redis.conf 复制到 redis 下的 bin 目录下
[root@localhost redis-3.0.0]# cp redis.conf /usr/local/redis-cluster/redis-1/bin [root@localhost redis-3.0.0]# cp redis.conf /usr/local/redis-cluster/redis-2/bin [root@localhost redis-3.0.0]# cp redis.conf /usr/local/redis-cluster/redis-3/bin [root@localhost redis-3.0.0]# cp redis.conf /usr/local/redis-cluster/redis-4/bin [root@localhost redis-3.0.0]# cp redis.conf /usr/local/redis-cluster/redis-5/bin
[root@localhost redis-3.0.0]# cp redis.conf /usr/local/redis-cluster/redis-6/bin

转载于:https://blog.51cto.com/13517854/2140237

Java之品优购部署_day01(8)相关推荐

  1. Java之品优购部署_day01(10)

    4.3 连接 Redis-Cluster4.3.1 客户端工具连接 Redis-cli 连接集群: file:///C:\Users\user\AppData\Local\Temp\ksohtml\w ...

  2. Java之品优购部署_day03(6)

    转载于:https://blog.51cto.com/13517854/2147815

  3. Java之品优购课程讲义_day19(6)

    品优购-秒杀下单 4.1 需求分析 商品详细页点击立即抢购实现秒杀下单,下单时扣减库存.当库存为 0 或不在活动期 范围内时无法秒杀. 4.2 后端代码 4.2.1 服务接口层 修改 pinyougo ...

  4. Java之品优购课程讲义_day01(8)

    4.1.1 商家管理后台 构建 web 模块 pinyougou-shop-web 与运营商管理后台的构建方式类似.区别: (1)定义 tomcat 的启动端口为 9102 (2)springmvc. ...

  5. Java之品优购课程讲义_day05(8)

    5.1 最简单的 FastDFS架构 5.1 FastDFS安装 FastDFS 安装步骤非常繁琐,我们在课程中不做要求.已经提供单独的<FastDFS 安装部署文档>供学员们课后阅读. ...

  6. Java之品优购课程讲义_day05(4)

    电商概念及表结构分析 2.1 电商概念 SPU与 SKU SPU = Standard Product Unit ( 标 准 产 品 单 位 ) SPU 是商品信息聚合的最小单位,是一组可复用.易检索 ...

  7. Java之品优购课程讲义_day17(2)

    结算页-收件人地址选择 2.1 需求与数据库分析 2.1.1 需求描述 在结算页实现收件人地址选择功能 2.1.2 数据库结构分析 Tb_address 为地址表 2.1 准备工作 2.1.1 生成代 ...

  8. Java之品优购课程讲义_day16(2)

    2.1 后端控制层 实现思路: (1)从 cookie 中取出购物车 (2)向购物车添加商品 (3)将购物车存入 cookie pinyougou-cart-web 工程新建 CartControll ...

  9. Java之品优购课程讲义_day20(5)

    资源过滤与变量替换 修改 pom.xml ,在 build 节点中添加如下配置 <filters><filter>src/main/resources/filters/db_$ ...

最新文章

  1. 周期串java_求最小周期串
  2. VMtools的安装与卸载
  3. CentOS中怎样解压rar文件
  4. 闪电网络介绍以及试用 (下)
  5. Python有哪些是必须学的运算符?
  6. 如何让Edge浏览器整体作为一个窗口,而不是每个标签页(选项卡)作为一个窗口?
  7. 「权威发布」2019年大学生电子设计竞赛,仪器设备和主要元器件清单
  8. mysql 优化表的作用_mysql实战优化之三:表优化
  9. 前端学习(1048):todolist正在进行和已经完成阶段
  10. 第3篇:Flowable-IDM详述
  11. css 浏览器的兼容性问题 0303
  12. EMC NetWorker简单管理指南(二)
  13. 查看字段postgresql pg_buffercache
  14. linux 搜索文件后缀名,Linux -find、文件后缀名
  15. CNN结构:色彩特征提取-色彩属性HSV空间(色彩冷暖初始)
  16. 低代码发展趋势解读|低代码成为企业数字化转型“加速器”
  17. 拼图(九宫格,十六宫格)
  18. 开源 5k star 的定时任务管理系统,我爱了!
  19. Jetpack之LiveData
  20. 搜狗输入法怎么打印间隔号

热门文章

  1. 数据访问增删改查之单项查询
  2. 《论道HTML5》内容技术分享活动
  3. HTML DOM文档对象查找元素的方法
  4. 配置apache支持PHP(win7)
  5. OpenResty(nginx)限流配置实现
  6. Studio 3T更改使用时间破解免费使用方式(转,可以使用)
  7. css 实现一个尖角_一个讲述了 CSS 相关的技巧、动画实现 的开源项目(60篇相关文章)...
  8. 磁盘管理来安装linux,Linux_在CentOS系统中安装quota来管理磁盘配额,在网络管理的工作中,由于硬 - phpStudy...
  9. linux 查杀php木马,linux上php木马、后门查杀总结
  10. python 漂亮界面demo_在这个什么都看脸的时代,如何用 GUI 提高 python 程序的颜值?...