Redis Cluster集群模式

Redis Cluster

  • 它是Redis的分布式解决方案,在Redis 3.0版本正式推出的,有效解决了Redis分布式方面的需求。当遇到单机内存、并发、流量等瓶颈时,可以采用Cluster架构达到负载均衡的目的。
  • 数据分布理论: 分布式数据库首要解决把整个数据集按照分区规则映射到多个节点的问题,即把数据集划分到多个节点上,每个节点负责整个数据的一个子集。常见的分区规则有哈希分区顺序分区。Redis Cluster采用哈希分区规则,因此接下来会讨论哈希分区规则。
  • 常见的哈希分区有以下几种: 节点取余分区;一致性哈希分区;虚拟槽分区

顺序分区

  • 可以顺序访问
  • 数据分散,容易倾斜
  • 举例:HBase和bigtable

哈希分布

节点取余

  • 数据节点关系变化很大,导致数据迁移,迁移的数量和添加节点有关
  • 最好翻倍扩容

一致性哈希分区

  • 只影响相邻节点,但还是会有数据迁移

 

redis采用的虚拟槽分区

  • 每一个槽都会映射一个数据子集
  • key会根据CRC16(哈希函数)来计算槽范围

 

redis集群功能限制

  • key批量操作支持有限。如:MSET``MGET,目前只支持具有相同slot值的key执行批量操作
  • key事务操作支持有限。支持多key在同一节点上的事务操作,不支持分布在多个节点的事务功能
  • key作为数据分区的最小粒度,因此不能将一个大的键值对象映射到不同的节点。如:hash、list
  • 不支持多数据库空间。单机下Redis支持16个数据库,集群模式下只能使用一个数据库空间,即db 0

集群安装 配置

  • 需要最少六台redis节点,其中三台用来设置槽的范围(6380、6381、6382),其余三台用于Redis cluster(638{3-5})
  • 6380,6381,6382作为主节点,6383,6384,6385作为从节点
  • 和以往操作一样,新建一个文件夹,mkdir cluster作为集群安装的基础文件夹,在里面以端口进行文件夹的创建
  • mkdir -pv {6380,6381,6382,6383,6384,6385}/{conf,data,logs}以端口建文件夹,以及对应的conf、data和logs配套文件夹
  • 在6380的文件夹下的conf文件夹下,新建redis.conf文件,输入的内容如下
daemonize yespidfile /usr/local/redis-4.0.14/cluster/6380/redis.pidport 6380loglevel noticeprotected-mode nologfile "/usr/local/redis-4.0.14/cluster/6380/logs/redis.log"dir /usr/local/redis-4.0.14/cluster/6380/data## 集群模式配置cluster-enabled yescluster-node-timeout 15000cluster-config-file /usr/local/redis-4.0.14/cluster/6380/nodes.conf
  • 将其拷贝到其余的集群文件所对应的文件夹下,cp 6380/conf/redis.conf 6381/conf/,此刻是在cluster的文件目录内进行此操作
  • 将redis.conf里面的端口信息使用命令进行修改,别的不需要改变,sed -i 's/6380/6381/g' 6381/conf/redis.conf,以上的两个操作适用于全部的端口文件
  • 在src目录下,启动所有的集群服务redis-server /usr/local/redis-4.0.14/cluster/6380/conf/redis.conf,其余的类似
  • 使用命令查看状态ps -ef|grep redis,可以看到,redis的后年会标有【cluster】的标志
  • 使用命令,连接到6380接口,redis-cli -p 6380
  •  使用info命令查看相关信息,在redis-cli里面进行操作
  • CLUSTER nodes查看集群的节点,前面的字符串是集群ID,在redis-cli里面进行操作
  • cluster meet 192.168.33.130 6381,将其余的节点加入到集群中,在redis-cli里面进行操作
  • 给每一个集群的节点分配槽,使用命令redis-cli -p 6380 cluster addslots {0..5461},需要退出redis-cli进行操作
  • redis-cli -p 6381 cluster addslots {5462..10922}
  • redis-cli -p 6382 cluster addslots {10923..16383}

  •  将6383作为6380的从节点,redis-cli -p 6383 cluster replicate 6380的序列号
  • 同理将6384和6385配置成为6381和6382的从节点
  • 可以使用ruby可以简化集群配置的流程

集群模式的要求

  • 安装ruby(大于2.2.2)
  • 安装redis 集群配置
  • 安装gem
  • 安装ruby的redis包
  • redis-trib.rb构建集群

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/447279.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

永远和靠谱的人在一起!

巴菲特每年都会同大学生进行座谈,在一次交流会上,有学生问他:您认为一个人最重要的品质是什么?巴菲特没有正面回答这个问题,而是讲了一个小游戏,名为:买进你同学的10%。 巴菲特说:现在给你们一…

Redis事务详解

传统事务的特性 原子性一致性隔离性:事务之间互不干扰持久化:一旦事务提交,无法修改 Redis事务机制 MULTI、EXEC、DISCARD和WATCH命令是Redis事务功能的基础。Redis事务允许在一次单独的步骤中执行一组命令,并且可以保证如下两个…

工作的最终目的

当时公司招了大批应届本科和研究生毕业的新新人类。平均年龄25岁。那个新的助理,是经过多次面试后,我亲自招回来的一个女孩。名牌大学本科毕业,聪明,性格活泼。私下里我得承认,我招她的一个很重要的原因,除…

销售员所做的一切工作最终目的就是为了成交

(1)最后一次报价禁忌.报价过晚或者过于匆忙步幅度太大,显得过于慷慨;让步幅度太小,显得毫无意义当谈判进展到最后,双方只是在最后的某一两个问题上尚有不同意见,过让步才能求得一致,签订协议。在…

Redis java客户端操作

jedis jedis官方指定的redis java客户端&#xff0c;将其导入到pom.xml问价内 <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><vers…

HEVC/H265 namespace 介绍

在 HEVC/H265 代码中&#xff0c;有三个使用的namespace&#xff1a; 1. df 2. df::program_options_lite 3. RasterAddress 对于第一个 df 的namespace&#xff0c;我一直百思不得其解&#xff0c;df 是什么含义&#xff1f;老外对起名是很重视的&#xff0c;肯定有原因。…

Redis整合Springboot实现数据共享

代码的整体结构 RedisSessionConfig.java package com.cc.springbootredissession.config;import org.springframework.context.annotation.Configuration; import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;Configuration E…

人生什么最重要

什么最重要 20岁的人说,学习成绩最重要.一次考试分数,可以把人分为三六九等.&#xff02;博士&#xff02;,&#xff02;本科&#xff02;,&#xff02;大专&#xff02;&#xff02;高职&#xff02;&#xff02;中专&#xff02;,成绩好的上好学校,成绩差的上差学校;成绩好的…

Redis整合Springboot实现单机配置

整体结构 配置文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/…

撑起整个互联网的7大开源技术

撑起整个互联网的7大开源技术 很多人可能尚未意识到&#xff0c;我们使用的电脑中运行有开源软件&#xff0c;手机中运行有开源软件&#xff0c;家里的电视也运行有开源软件&#xff0c;甚至小小的数码产品中也运行有开源软件&#xff0c;尤其是互联网服务器端软件&#xff0c…

Redis整合springboot实现哨兵模式

整体结构 RedisConfig package com.cc.springredis.config;import com.cc.springredis.RedisUtil; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.R…

Redis整合springboot实现集群模式

整体结构 Redis.config package com.cc.springredis.config;import com.cc.springredis.RedisUtil; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection…

一个穷人是从什么时候开始有钱的?

2010年&#xff0c;文野31岁那年&#xff0c;买房后第二年&#xff0c;完成了「人生中最重要的一次转变」。 这一年&#xff0c;他在心里对自己的定位&#xff0c;从穷人变成了有钱人。 「一些人哪怕有钱了&#xff0c;心里也永远甩不脱穷的影子。」这是我曾经在《 阶段性胜…

Redis整合springboot实现消息队列

publisher消息的发出 代码整体的结构 publisherConfig package com.cc.springbootredispublisher.config;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.conne…

人最重要的能力是什么?

我见过很多人有能力、能成功&#xff0c;但并不幸福。人最重要的能力是什么? 人生最重要的能力是什么?我的答案是&#xff0c;随时保持内心平静的能力。 我开始想到的是“坚持”&#xff0c;后来我认为不对&#xff0c;“坚持”仅仅是成功所必备的能力&#xff0c;并不是人生…

Redis数据缓存

代码的整体结构 配置文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apac…

hevc/265 开源项目及相关

1.X265 个是有两个版本&#xff0c;一个是国内人搞的&#xff0c;是国外公司搞的 1.国外公司版本 只是一个编码器&#xff0c;目前没有支持解码 开发语言 c web url: www.x265.org source url: https://bitbucket.org/multicoreware/x265 x265 is an open-source projec…

IPFS星际文件系统的简介

IPFS简介 IPFS&#xff08;InterPlanetary File System&#xff09;叫星际文件传输系统&#xff0c;本质是一个基于点对点的分布式超媒体分发协议&#xff0c;它整合了分布式系统&#xff0c;为所有人提供全球统一的可寻址空间&#xff0c;因为他具有良好的安全性、较高的传输…

ARM和NEON指令 very nice

在移动平台上进行一些复杂算法的开发&#xff0c;一般需要用到指令集来进行加速。目前在移动上使用最多的是ARM芯片。 ARM是微处理器行业的一家知名企业&#xff0c;其芯片结构有&#xff1a;armv5、armv6、armv7和armv8系列。芯片类型有&#xff1a;arm7、arm9、arm11、corte…

IPFS下载安装和配置

参考链接 因为这个网站访问速度很慢&#xff0c;我提供了IPFS的MAC版本。有需要的查看我的资源下载。 大致流程 安装 $ ls go-ipfs_v0.4.10_darwin-amd64.tar.gz $ tar xvfz go-ipfs_v0.4.10_darwin-amd64.tar.gz x go-ipfs/build-log x go-ipfs/install.sh x go-ipfs/ipfs…