Redis Cluster

概念

Redis Cluster采用多主多从的方式,支持开启多个主节点,每个主节点可以挂载多个从节点。

Cluster会将数据进行分片,将数据分散到多个主节点上,而每个主节点都可以对外提供读写服务。这种做法使得Redis突破了单机内存大小的限制,扩展了集群的存储容量。并且Redis Cluster也具备高可用性,因为每个主节点上都至少有一个从节点,当主节点挂掉时,Redis Cluster的故障转移机制会将某个从节点切换为主节点。

Redis Cluster是一个去中心化的集群,每个节点都会与其他节点保持互连,使用gossip协议来交换彼此的信息,以及探测新加入的节点信息。并且Redis无需任何代理,客户端会直接与集群中的节点直连。

分片方式

1.哈希取模

类似HashMap的取模方式,只要hash计算的结果够分散,那么每个key都可以均匀分布到N个几点上。

但是,如果要扩容或者缩容,会导致key重新计算存储位置,从而导致缓存失效。

2.一致性哈希

将整个哈希值空间组织成一个虚拟的圆环。对key计算它的哈希值,确定它在环上的位置,从该位置沿着环顺指针的走,找到第一个节点,便是这个key应该存放的服务器节点的位置。

3.虚拟节点 + 一致性哈希

映射关系为数据到虚拟节点,再由虚拟节点到实际节点。

集群搭建

1.由于Redis Cluster要求必须要至少6个节点,所以以最低要求3主3从为例。修改redis6390.conf --- redis6395.conf配置文件

配置集群端口号

port 6390

开启守护进程

deamonize yes

关闭保护模式

protected-mode no

将集群开启

cluster-enabled yes

cluster-config-file nodes-6390.conf

2.分配主从(--cluster-replicas 1:表示创建1主1从)

./redis-cli --cluster create 6组ip 端口 --cluster-replicas 1

3.分配完集群后,可能会报错---16384个槽位没有分配完。通过如下指令进行检查和修复

redis-cli --cluster check 172.17.02:6379

redis-cli --cluster fix 172.17.02:6379 #官方修复功能

数据存放位置

在任意主节点添加数据会自动将数据分配到对应槽位的对应节点,不一定会保存在当前节点。

相关推荐
时间静止不是简史1 小时前
生产事故排查:Redis 宕机导致补偿队列消费线程死亡,通话录音未上送业务平台
java·redis
2301_32241428044 小时前
基于SpringBoot+Vue的休闲零食超市管理系统的设计与实现59004-计算机毕设 原创(免费领源码+部署教程+开发环境)
java·vue.js·spring boot·redis·mysql·决策树·推荐算法
catoop7 小时前
API Key 设计与安全生成方案:结构拆解、数据库设计与 Java 实现
java·数据库·安全
Web极客码7 小时前
我用 Claude 分析 Redis 哨兵日志,实现跨机房数据不一致自动对齐
数据库·redis·php
库库的数据库笔记7 小时前
国产信创数据库的MySQL兼容性深度对比解析
大数据·数据库·mysql·oceanbase·政务
microrain7 小时前
SagooIoT 的缓存换后端只改一行配置,文件后端连 Redis 都不需要
物联网·缓存·golang·sagooiot
姚远Oracle ACE8 小时前
为什么无法连接到 PostgreSQL?
数据库·postgresql
ss2738 小时前
AI时代首先数据库-PostgreSQL实战笔记 | 22 PostgreSQL实例与集群
数据库·笔记·postgresql
ss2738 小时前
AI时代首先数据库-PostgreSQL实战笔记 | 21 PostgreSQL进程与内存架构介绍
数据库·笔记·postgresql