Redis群集模式

目录

一、集群的作用

二、Redis集群的数据分片

三、集群的工作原理​编辑

四、搭建Redis群集模式

1.准备环境

1.1 首先安装redis

1.2 在etc下创建redis

1.3再在redis中创建redis-cluster/redis600{1..6}文件

1.4 做个for循环

1.5 开启群集功能

1.6启动redis节点

1.7 启动集群

1.8 测试集群

总结


一、集群的作用

(1)数据分区:数据分区(或称数据分片)是集群最核心的功能。 集群将数据分散到多个节点,一方面突破了Redis单机内存大小的限制,存储容量大大增加;另一方面每个主节点都可以对外提供读服务和写服务,大大提高了集群的响应能力。 Redis单机内存大小受限问题,在介绍持久化和主从复制时都有提及;例如,如果单机内存太大,bgsave和bgrewriteaof的fork操作可能导致主进程阻塞,主从环境下主机切换时可能导致从节点长时间无法提供服务,全量复制阶段主节点的复制缓冲区可能溢出。

(2)高可用:集群支持主从复制和主节点的自动故障转移(与哨兵类似);当任一节点发生故障时,集群仍然可以对外提供服务。

二、Redis集群的数据分片

Redis集群引入了哈希槽的概念
Redis集群有16384个哈希槽(编号0-16383)
集群的每个节点负责一部分哈希槽
每个Key通过CRC16校验后对16384取余来决定放置哪个哈希槽,通过这个值,去找到对应的插槽所对应的节点,然后直接自动跳转到这个对应的节点上进行存取操作

三、集群的工作原理

Master节点:

Master的功能:

  1. 读写可以负载均衡
  2. 自动故障转移
  3. 突破了单机存储限制

Slave节点:

四、搭建Redis群集模式

1.准备环境

redis的集群一般需要6个节点,3主3从。

方便起见,这里所有节点在同一台服务器上模拟
以端口号进行区分:3个主节点端口号:6001/6002/6003,对应的从节点端口号:6004/6005/6006。

1.1 首先安装redis

cd /opt
##上传tar包[root@localhost opt]#ls
redis-5.0.7.tar.gz  rhyum install -y gcc gcc-c++ make  ##安装编译环境[root@localhost opt]#tar xf redis-5.0.7.tar.gz   ##解压
[root@localhost opt]#cd redis-5.0.7/             ##切换目录
[root@localhost redis-5.0.7]#ls
[root@localhost redis-5.0.7]#make                ##编译安装
[root@localhost redis-5.0.7]#make prefix=/usr/local/redis install

1.2 在etc下创建redis

1.3再在redis中创建redis-cluster/redis600{1..6}文件

1.4 做个for循环

for i in {1..6}
do
cp /opt/redis-5.0.7/redis.conf /etc/redis/redis-cluster/redis600$i
cp /opt/redis-5.0.7/src/redis-cli /opt/redis-5.0.7/src/redis-server /etc/redis/redis-cluster/redis600$i
done

1.5 开启群集功能

其他5个文件夹的配置文件以此类推修改,注意6个端口都要不一样。

在redis.conf中修改配置文件

#bind 127.0.0.1							#69行,注释掉bind 项,默认监听所有网卡
protected-mode no						#88行,修改,关闭保护模式
port 6001								#92行,修改,redis监听端口,
daemonize yes							#136行,开启守护进程,以独立进程启动
cluster-enabled yes						#832行,取消注释,开启群集功能
cluster-config-file nodes-6001.conf		#840行,取消注释,群集名称文件设置
cluster-node-timeout 15000				#846行,取消注释群集超时时间设置
appendonly yes							#699行,修改,开启AOF持久化

其他也是如此操作为了简单我们可以直接复制覆盖

然后一个一个修改配置文件即可

步骤如上:

  • 92行修改redis监听端口
  • 840行群集名称文件设置

1.6启动redis节点


分别进入那六个文件夹,执行命令:redis-server redis.conf ,来启动redis节点

for d in {1..6}
do
cd /etc/redis/redis-cluster/redis600$d
redis-server redis.conf
done

ps -ef | grep redis

1.7 启动集群

redis-cli --cluster create 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6003 127.0.0.1:6004 127.0.0.1:6005 127.0.0.1:6006 --cluster-replicas 1也可以使用IP地址

1.8 测试集群

redis-cli -p 6001 -c					#加-c参数,节点之间就可以互相跳转
127.0.0.1:6001> cluster slots			#查看节点的哈希槽编号范围
1) 1) (integer) 54612) (integer) 10922									#哈希槽编号范围3) 1) "127.0.0.1"2) (integer) 6003									#主节点IP和端口号3) "fdca661922216dd69a63a7c9d3c4540cd6baef44"4) 1) "127.0.0.1"2) (integer) 6004									#从节点IP和端口号3) "a2c0c32aff0f38980accd2b63d6d952812e44740"
2) 1) (integer) 02) (integer) 54603) 1) "127.0.0.1"2) (integer) 60013) "0e5873747a2e26bdc935bc76c2bafb19d0a54b11"4) 1) "127.0.0.1"2) (integer) 60063) "8842ef5584a85005e135fd0ee59e5a0d67b0cf8e"
3) 1) (integer) 109232) (integer) 163833) 1) "127.0.0.1"2) (integer) 60023) "816ddaa3d1469540b2ffbcaaf9aa867646846b30"4) 1) "127.0.0.1"2) (integer) 60053) "f847077bfe6722466e96178ae8cbb09dc8b4d5eb"

设置名字

对应的slave节点也有这条数据,但是别的节点没有s

总结

群集的作用

  1. 解决因服务器容量不足以容纳用户大量的写请求。
  2. 高并发写导致单台服务器阻塞,进而导致性能瓶颈问题。

数据如何进行存储:

使用hash算法

16384hash槽

每一个槽位512字节

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

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

相关文章

汇编语言:寻址方式在结构化数据访问中的应用——计算人均收入

有一年多没有在CSDN上发博文了。人的工作重心总是有转移的,庆幸一直在做着有意义的事。   今天的内容,是为汇编语言课程更新一个实验项目。      本方案修改自王爽编《汇编语言》第4版P172“实验7寻址方式在结构化数据访问中的应用” …

【御控物联】JavaScript JSON结构转换(22):小结

文章目录 一、结语二、接下来……三、在线转换工具四、技术资料 一、结语 《JavaScript JSON结构转换》主题自24.03.25至24.XX.XX历时XX天,共计编写 XX篇(XX篇功能说明XX篇场景)。 在此我们对《JavaScript JSON结构转换》功能做一下总结! 在JSON结构转…

文件上传【1】

1.文件上传更改上传类型 上传文件时存在上传类型固定(jpg、png、gif)如果是前端确定(弹窗,后端未出现请求确定是前端)只需要在设置中禁用js代码或抓包更改文件后缀名就可以上传其他类型的文件(亦可用于复制…

使用在对讲机上的国产芯片D4890介绍

1、D4890 目前客户主要使用在对讲机上 2、推荐的应用线路图如下: 3、实际测试输出波形如下(VCC4.5V,RL=8Ω): 4、结论:我司推荐的 D4890 可满足客户的使用要求。

从300亿分子中筛出6款,结构新且易合成,斯坦福抗生素设计AI模型登Nature子刊

ChatGPT狂飙160天,世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站https://ai.hzytsoft.cn/ 更多资源欢迎关注 全球每年有近 500 万人死于抗生素耐药性,因此迫切需要新的方法来对抗耐药菌株。 …

基于巴法云物联网云平台构建可视化控制网页(以控制LED为例)

0 前言 如今大大小小的物联网云平台非常多,但大部分要收取费用,免费的物联网云平台功能则有很多限制使用起来非常不方便。以百度云物联网云平台为例,它的物可视不支持发布主题,等于可视化界面只能作为数据监控而不具备双向通信的…

练习题(2024/4/6)

1最接近的三数之和 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。 示例 1: 输入:nums [-1,2,1,-4], target …

cJSON(API的详细使用教程)

我们今天来学习一般嵌入式的必备库,JSON库 1,json和cJSON 那什么是JSON什么是cJSON,他们之间有什么样的关联呢,让我们一起来探究一下吧。 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式&…

特征提取算法

特征提取算法 0. 写在前边1. Harris算法1.1 写在前面1.2 Harris算法的本质1.3 Harris算法的简化 2. Harris3D2.1 Harris3D算法问题定义2.2 Harris3D with intensity2.3 Harris3D without intensity 3. ISS特征点的应用 0. 写在前边 本篇将介绍几种特征提取算法,特征…

ASP.Net添加Swagger注释

文章目录 Swagger添加Swagger注释 Swagger 添加Swagger注释 1、右击项目->选择属性->点击生成->输出,选中文档文件 2、配置服务 在program.cs 文件里配置SwaggerUI //增加项一 builder.Services.AddSwaggerGen(c> {c.SwaggerDoc("v1", ne…

前端开发学习笔记 3 (Chrome浏览器调试工具、Emmet语法、CSS复合选择器、CSS元素选择模式、CSS背景)

文章目录 Chrome浏览器调试工具Emmet语法CSS复合选择器后代选择器子选择器并集选择器伪类选择器 CSS元素选择模式元素选择模式概述CSS块标签CSS行内标签CSS行内块标签CSS元素显示模式转换 CSS背景CSS背景颜色CSS背景图片CSS背景图片平铺CSS背景图片位置CSS背景图片固定CSS背景复…

AWS的优劣势分析,适用于哪些行业?

AWS相较于其他云厂商,起步早,产品成熟及涉及范围广,具有高度适配性,多年来一直引领着IaaS市场,服务器的可用性比其他的云厂商要高,并且在全球25个地区拥有81个可用性区域,基本上辐射范围已经涵盖…