Redis分片的实现

article/2025/9/30 19:54:38

1.为什么使用分片

1.1 说明:

虽然redis可以扩展内存空间的大小,但是如果需要存储海量的数据,一味地去扩大内存,其实效率不高.

1.2 分片的介绍

准备多台redis,共同为用户提供缓存服务,在保证效率的前提下,实现了内存的扩容.
用户在使用分片机制时,将多台redis当做一个整体来用.

2. 分片的搭建

2.1 分片的规划

由3台redis构成 端口号分别为6379/6380/6381, 如果需要准备多台redis则准备多个配置文件即可,注意其中的端口号.

2.1 准备多台redis

在这里插入图片描述

2.2 修改redis端口

说明:修改redis的配置文件的端口号
命令:vim 6380.conf
在这里插入图片描述

2.3 启动多台redis

可以建立sh脚本启动
在这里插入图片描述
在这里插入图片描述

3. 一致性hash算法

一致性哈希算法在1997年由麻省理工学院提出,是一种特殊的哈希算法,目的是解决分布式缓存的问题。 在移除或者添加一个服务器时,能够尽可能小地改变已存在的服务请求与处理请求服务器之间的映射关系。一致性哈希解决了简单哈希算法在分布式哈希表( Distributed Hash Table,DHT) 中存在的动态伸缩等问题.

3.2 一致性hash原理说明

目的:解决数据如何在分布式环境下进行存储.
hash取值区间:8位16进制,共有2^32种可能性.

  • 数据如何存储
    首先,对存储节点的哈希值进行计算,其将存储空间抽象为一个环,将存储节点配置到环上。环上所有的节点都有一个值。每个node节点都是由IP+port的值通过一致性哈希算法得到.
    其次,对数据进行哈希计算,按顺时针方向将其映射到离其最近的节点上去。
    在这里插入图片描述
  • 当节点发生变化时带来哪些影响
    当节点的数量发生了变化时,则节点中的对应的数据可以动态的迁移.
    原则:当发生了节点变化时,应该尽可能小的影响其他节点.
    在这里插入图片描述

3.3 一致性hash特性

一致性哈希算法是在哈希算法基础上提出的,在动态变化的分布式环境中,哈希算法应该满足的几


http://chatgpt.dhexx.cn/article/WnEXLGyc.shtml

相关文章

使用DockerCompose部署Redis分片集群——整合SpringBoot

今天来记录一下使用DockerCompose部署Redis分片集群的过程,前面写了几篇关于redis的博客了,这里就不再过多介绍了,直接上配置就好了 version: "3.0"services:redisServer1:image: redis:6.2.4container_name: redis_server1volume…

redis之分片集群

写在前面 当redis单实例存储的数据过多时,比如说20G,就会出现因为生成RDB快照较长时间比如500ms阻塞主线程的问题,在这一段时间里,因为主线程被阻塞,所以Redis实例无法正常的对外提供服务,出现这个问题的原…

Redis分片集群(详解+图)

目录 分片集群特征: 散列插槽 集群伸缩 创建新的redis实例 添加新节点到redis 转移插槽 故障转移 自动故障转移 手动故障转移 RedisTemplate访问分片集群 主从和哨兵可以解决高可用、高并发读的问题。但是依然有两个问题没有解决: 海量数据存储问…

redis分片_Redis分片

redis分片 本文是我们学院课程的一部分,标题为Redis NoSQL键值存储 。 这是Redis的速成课程。 您将学习如何安装Redis和启动服务器。 此外,您还会在Redis命令行上乱七八糟。 接下来是更高级的主题,例如复制,分片和集群&#xff0…

(分布式缓存)Redis分片集群

对应的教程视频: 高级篇Day3-04-Redis分片集群_哔哩哔哩_bilibili 一.搭建分片集群 1.集群结构 分片集群需要的节点数量较多,这里我们搭建一个最小的分片集群,包含3个master节点,每个master包含一个slave节点,结构如下&#xff…

Docker中搭建redis分片集群,搭建redis哨兵结构,实现springboot中对redis分片集群、哨兵结构的访问,Redis缓存雪崩、缓存击穿处理(非关系型数据库技术课程 第十二周)

文章目录 一、要求:二、知识总结缓存雪崩解决方案 docker中redis分片集群搭建配置好配置文件redis-6380.confredis-6381.confredis-6382.confredis-6383.confredis-6384.confredis-6385.conf 将conf_cluster文件夹移动到对应位置docker中运行对应的redis容器docker中…

Redis分片入门案例

说明 由多台redis共同处理用户的业务数据,实现了redis内存数据的动态扩容,称之为分片机制。 特点 多态redis当作一台使用 分片搭建 1、在redis工作目录下创建工作目录 [rootlocalhost redis]# mkdir shards2、把redis配置文件复制到指定目录下 3、…

分布式缓存-Redis分片集群

一、分片集群结构 主从和哨兵可以解决高可用、高并发读的问题,但是依然有两个问题没有解决: 海量数据存储问题高并发写的问题 使用分片集群可以解决上述问题,分片集群特征: 集群中有多个 master,每个 master 保存不…

SpringBoot整合Redis分片

1 编辑分片配置文件 #redis.host192.168.126.129 #redis.port6379 redis.nodes192.168.126.129:6379,192.168.126.129:6380,192.168.126.129:63812 编辑配置类实现redis整合 Configuration //我是一个配置类 一般都会与Bean联用 PropertySource("classpath:/properti…

Redis搭建分片集群

一、什么是Redis分片集群 1、概念 Redis分片集群是用于将Redis的数据分布在多个Redis节点上的分布式系统。通过分片集群,可以将数据分成多个部分,并将每个部分存储在不同的节点上,以便实现Redis的高可用性和高性能。 2、Redis分片集群原理…

Docker下搭建Redis分片集群

分片集群结构 同一台虚拟机中开启6个redis实例,模拟分片集群 IP PORT角色192.168.19.1287001master192.168.19.1287002master192.168.19.1287003master192.168.19.1288001slave192.168.19.1288002slave192.168.19.1288003slave 搭建Redis分片集群 创建实例目录 …

redis分片集群

目录 分片集群结构搭建分片集群散列插槽集群伸缩故障转移 分片集群结构 主从和哨兵可以解决高可用、高并发读的问题。但是依然有两个问题没有解决: 1.海量数据存储问题 2.高并发写的问题使用分片集群可以解决上述问题,分片集群特征: 1.集群…

Redis分区/分片详解

分区/分片详解 分区是分割数据到多个Redis实例的处理过程,因此每个实例只保存key的一个子集。 如果只使用一个redis实例时,其中保存了服务器中全部的缓存数据,这样会有很大风险,如果单台redis服务宕机了将会影响到整个服务。解决的…

Redis(七)--分片技术详解

文章目录 介绍Redis集群的数据分布算法:哈希槽算法集群的请求重定向Redis集群中节点的通信机制:goosip协议介绍原理通信过程优缺点goosip协议的常见类型 集群的扩容与收缩扩容收缩 集群的故障检测与故障恢复机制故障检测故障恢复 介绍 Redis分片&#x…

Redis集群系列五 —— 分区/片概念

什么是分区 分区就是将所存储的数据按照一定的规则存储在不同的存储服务或介质上,通过降低单服务或介质的数据量级来提升数据处理能力,从而达到拥有数据处理横向扩容的能力的目的。 还可简单的理解为分区就是将数据拆分到多个 Redis 实例的过程&#xf…

redis分区(分片)原理

redis相关文章 ----redis原理概述 -----redis集群方案 ----redis分区(分片)原理 ----Redis实现分布式锁 ----redis缓存穿透、雪崩和解决方案 分区的概念 分区是分割数据到多个Redis实例的处理过程,因此每个实例只保存key的一个子集如果只使…

调和级数近似求和公式推导(转载)

原文链接: https://blog.csdn.net/ezoiHQM/article/details/82961266?utm_mediumdistribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_sourcedistribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonec…

级数求和.

题目描述 输入格式 一个正整数 k。 输出格式 一个正整数 n。 输入样例 1输出样例 2#include<iostream> using namespace std; int main() {int k;cin>>k;double S0,tmp;for(int i1;i<99999;i){tmp1.0/i;SStmp;if(S>k){cout<<i<<endl;break…