Redis 集群

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 在我们之前的课程中,我搭建了一个单机,单进程,缓存redis。我们使用rdb,aof持久化,用来确保数据的安全。

Redis集群

介绍

1.单机、单实例的持久化方式

在我们之前的课程中,我搭建了一个单机,单进程,缓存redis。我们使用rdb,aof持久化,用来确保数据的安全。

rdb(relation-ship database)持久化:
默认redis会以一个rdb快照的形式,将一段时间内的数据持久化到硬盘,保存成一个dumpr.rdb二进制文件。
工作原理:当redis需要持久化时,redis会fork一个子进程,子进程将数据写到磁盘上临时一个RDB文件中。当子进程完成写临时文件后,将原来的RDB替换掉,这样的好处就是可以copy-on-write。
配置redis.conf:
save 900 1
save 300 10
save 60 10000
在900秒内,如果有一个key被修改,则会发起快照保存。300秒之内,如果超过10个key被修改,则会发起快照保存。在60秒内,如果1w个key被修改,则会发起快照保存。
aof(append-only file)持久化:
默认会以一个appendonly.aof追加进硬盘。
redis.conf默认配置:
appendfsync yes
appendfdync always
#每次有数据修改都会写入AOF
appendfsync everysec
#每秒同步一次,策略为AOF的缺省策略
2.单节点、单实例面临的问题:
  • 单点故障
  • 容量有限
  • 压力

面对这么多问题,我们解决的方式是,将单节点变为多节点进行架构:

1.进行读写分离。

2.基于三维进行扩展AKF。

  • X轴进行全量镜像的节点复制(从单库到多库)
  • Y轴进行业务功能分离(根据业务逻辑再次进行分库)
  • Z轴进行优先级逻辑再拆分(单业务进行分片,如MR的DataNode,单业务进行分节点运算)
3.进行集群化面临的几个问题:

1.数据一致性

分量数据不能保证一致,如果保证一致,那么就会丢失可用性。如果我们保证数据的强一致性,那么,我们将会破坏可用性(数据在同步,不能保持可用)。

2.数据完整性

我们保证弱一致,可能会取到错误数据。

3.数据最终一致性

我们如图3的价架构,在中间放一个类似kafka之类的中间件,然后我们能保证最终一致性。(kafka通过一定技术,变得可靠)

4.分布式常见的几个架构:

主备架构:主机死了,备机可以顶

主从复制:主机后面有几个从节点。(redis用的是主从复制)

主从复制架构,又面临一个问题,单点故障怎么解决?

我们对主进行HA架构,用一个程序进行监控,该监控程序,为了避免单点故障,那么也必须是一个集群架构。

我们的监控设备一定是奇数台,进行过半选举,如果过半都选举故障,那么,将会跳到另一台节点。

配置

1.解压

准备一个redis的tar包,进行解压。

2.启动节点并跟随

启动3个实例,从节点使用replicaof ip port这个命令进行跟随主节点。

(注意,在redis 5之前,我们可以通过slaveof进行跟随主节点,但是,从redis5之后,改为了replicaof进行跟随)

3.使用追加方式

开启时候,使用appendonly yes这个配置,进行追加的方式进行写入集群。

是有用dump.rdb全量备份的时候,可以进行追随主节点

使用appendonly进行增量备份,是无法进行追随主节点的

4.主节点挂机

手动将主节点挂机

从节点可以变为主节点,直接使用replicaof no one命令

哨兵

1.启动3个哨兵,进行监控

命令是:

1.redis-server ./26379.conf --sentinel
2.也可以直接启动redis-sentinel
port 26379
sentinel monitor mymaster 127.0.0.1 6379 2

26379.conf文件只需要2行

第二行语义:哨兵 监控 监控名 ip 端口 几票通过

需要过30秒哨兵才能生效

目录
相关文章
|
2月前
|
存储 负载均衡 NoSQL
【赵渝强老师】Redis Cluster分布式集群
Redis Cluster是Redis的分布式存储解决方案,通过哈希槽(slot)实现数据分片,支持水平扩展,具备高可用性和负载均衡能力,适用于大规模数据场景。
214 2
|
5天前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
86 5
|
18天前
|
存储 监控 NoSQL
Redis高可用架构全解析:从主从复制到集群方案
Redis高可用确保服务持续稳定,避免单点故障导致数据丢失或业务中断。通过主从复制实现数据冗余,哨兵模式支持自动故障转移,Cluster集群则提供分布式数据分片与水平扩展,三者层层递进,保障读写分离、容灾切换与大规模数据存储,构建高性能、高可靠的Redis架构体系。
|
6月前
|
存储 NoSQL 数据库
Redis 逻辑数据库与集群模式详解
Redis 是高性能内存键值数据库,广泛用于缓存与实时数据处理。本文深入解析 Redis 逻辑数据库与集群模式:逻辑数据库提供16个独立存储空间,适合小规模隔离;集群模式通过分布式架构支持高并发和大数据量,但仅支持 database 0。文章对比两者特性,讲解配置与实践注意事项,并探讨持久化及性能优化策略,助你根据需求选择最佳方案。
202 5
|
2月前
|
存储 NoSQL 算法
Redis的集群架构与使用经验
本文介绍了Redis的集群架构与使用经验,包括主从复制、哨兵集群及Cluster分片集群的应用场景与实现原理。内容涵盖Redis主从同步机制、数据分片存储方式、事务支持及与Memcached的区别,并讨论了Redis内存用尽时的处理策略。适用于了解Redis高可用与性能优化方案。
|
3月前
|
负载均衡 NoSQL Redis
【赵渝强老师】Redis的主从复制集群
Redis主从复制是指将一台Redis服务器的数据复制到其他Redis服务器,实现数据热备份、故障恢复、负载均衡及高可用架构的基础。主节点负责写操作,从节点同步数据并可提供读服务,提升并发处理能力。
103 5
|
6月前
|
存储 NoSQL Redis
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 + 无锁架构 + EDA架构 + 异步日志 + 集群架构
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 + 无锁架构 + EDA架构 + 异步日志 + 集群架构
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 +  无锁架构 +  EDA架构  + 异步日志 + 集群架构
|
存储 缓存 NoSQL
Redis常见面试题(二):redis分布式锁、redisson、主从一致性、Redlock红锁;Redis集群、主从复制,哨兵模式,分片集群;Redis为什么这么快,I/O多路复用模型
redis分布式锁、redisson、可重入、主从一致性、WatchDog、Redlock红锁、zookeeper;Redis集群、主从复制,全量同步、增量同步;哨兵,分片集群,Redis为什么这么快,I/O多路复用模型——用户空间和内核空间、阻塞IO、非阻塞IO、IO多路复用,Redis网络模型
Redis常见面试题(二):redis分布式锁、redisson、主从一致性、Redlock红锁;Redis集群、主从复制,哨兵模式,分片集群;Redis为什么这么快,I/O多路复用模型
|
7月前
|
存储 NoSQL 算法
Redis分片集群中数据是怎么存储和读取的 ?
Redis集群采用的算法是哈希槽分区算法。Redis集群中有16384个哈希槽(槽的范围是 0 -16383,哈希槽),将不同的哈希槽分布在不同的Redis节点上面进行管理,也就是说每个Redis节点只负责一部分的哈希槽。在对数据进行操作的时候,集群会对使用CRC16算法对key进行计算并对16384取模(slot = CRC16(key)%16383),得到的结果就是 Key-Value 所放入的槽,通过这个值,去找到对应的槽所对应的Redis节点,然后直接到这个对应的节点上进行存取操作