Redis 部署选型方案

简介: Redis 部署选型方案==前言==项目即将使用Redis,本文对Redis的部署方案,进行选型分析。==一、部署方案介绍====1)、单机版==1-单机版.

Redis 部署选型方案


==前言==

  • 项目即将使用Redis,本文对Redis的部署方案,进行选型分析。

==一、部署方案介绍==

==1)、单机版==

img_2974ab49b788f4957987ff8bd7d188fb.jpe
1-单机版.jpg

单机版三个问题

  • 1、内存容量有限
  • 2、处理能力有限
  • 3、无法高可用
==2)、多机版==

img_86a663c099deadfd7eb40ea52e610937.jpe
2-多机版.jpg

特性

  • 1、复制(Replication)
  • 2、哨兵(Sentinel)
  • 3、集群(Cluster)

Redis多机版部署特性功能

  • 复制:扩展系统对于读的能力
  • 哨兵:为服务器提供高可用特性,减少故障停机出现
  • 集群:扩展内存容量,增加机器,提高性能读写能力和存储以及提高可用特性
==3)、复制==

Redis的复制(replication)功能允许用户根据一个Redis 服务器来创建任意多个该服务器的复制品,其中被复制的服务器为主服务器(master),而通过复制创建出来的服务器复制品,则为从服务器(slave),master负责读写,slave一般只负责读。只要主从服务器之间的网络连接正常,主从服务器两者会具有相同的数据,主服务器就会一直将发生在自己身上的数据更新同步给从服务器,从而一直保证主从服务器的数据相同。

img_de7685327701cedb0c55c344e51ae0c8.jpe
3-复制.jpg

特点:

  • 1、master/slave 角色
  • 2、master/slave 数据相同
  • 3、降低master读的压力,在转交从库

问题:

  • 1、无法保证高可用
  • 2、没有解决master写的压力
4)、哨兵

Redis sentinel 是一个分布式系统中监控redis主从服务器,并在主服务器下线时自动进行故障转移,其中三个特性:

  • 监控(Monitoring):Sentinel 会不断的检查你的主服务器和从服务器是否运作正常。
  • 提醒(Notification):当被监控的某个Redis服务器出现问题时,Sentinel可以通过API向管理员或者其他应用程序发送通知。
  • 自动故障迁移(Automatic failover):当一个主服务器不能正常工作时,Sentinel会开始一次自动故障前一操作。
    img_45ab65af8c79fdfbc52ab940fbc18922.jpe
    4-哨兵.jpg

    特点:
  • 1、保证高可用
  • 2、监控各个节点
  • 3、自动故障迁移

缺点:

  • 1、主从模式,切换需要时间丢数据
  • 2、没有解决master写的压力
5)、集群proxy

img_224aecb3588dffc66bd0338adcce36ac.jpe
5-集群proxy.jpg

Twemproxy

  • Twemproxy 是一个Twitter开源的一个redis和memcache 快速/轻量级代理服务器。
  • Twemproxy是一个快速的单线程代理程序,支持Memcached ASCII协议和redis协议。

特点:

  • 1、多种hash算法:MD5、CRC16、CRC32、CRC32a、hsieh、murmur、Jenkis
  • 2、支持失败节点自动删除
  • 3、后端Sharding分片逻辑对业务透明,业务方的读写方式和操作单个Redis一致。

缺点:

  • 1、增加了新的proxy,需要维护其高可用。
  • 2、failover逻辑需要自己实现,其本身不能支持故障的自动转移。
  • 3、可扩展性差,进行扩缩容都需要手动干预。
6)、直连版(三主三从)(cluster)
img_cce740d750be1c1d027163380239cb33.jpe
6-直连版.jpg

特点:

  • 1、无中心架构(不存在哪个节点影响性能瓶颈),少了proxy层。
  • 2、数据按照slot存储分布在多个节点,节点时间数据共享,可动态调用整数分布。
  • 3、可扩展性,可线性扩展到1000个节点,节点可动态添加或删除。
  • 4、高可用性,部分节点不可用时,集群仍可用,通过增加Slave做备份数据副本。
  • 5、实现故障自动failover,节点之间通过gossip协议交换状态信息,用投票机制完成Slave到Master的角色提升。

缺点:

  • 1、资源隔离性较差,容易出现相互影响的情况。
  • 2、数据通过异步复制,不保证数据的强一致性。
目录
相关文章
|
canal NoSQL 关系型数据库
Redis应用—7.大Value处理方案
本文介绍了一种用于监控Redis大key的方案设计及其实现步骤。主要内容包括:方案设计、安装与配置环境、binlog数据消费者。
566 29
Redis应用—7.大Value处理方案
|
7月前
|
存储 NoSQL Redis
手把手教你用 Docker 部署 Redis
Redis是高性能内存数据库,支持多种数据结构,适用于缓存、消息队列等场景。本文介绍如何通过Docker快速拉取轩辕镜像并部署Redis,涵盖快速启动、持久化存储及docker-compose配置,助力开发者高效搭建稳定服务。
2436 8
|
8月前
|
存储 监控 NoSQL
Redis高可用架构全解析:从主从复制到集群方案
Redis高可用确保服务持续稳定,避免单点故障导致数据丢失或业务中断。通过主从复制实现数据冗余,哨兵模式支持自动故障转移,Cluster集群则提供分布式数据分片与水平扩展,三者层层递进,保障读写分离、容灾切换与大规模数据存储,构建高性能、高可靠的Redis架构体系。
|
9月前
|
监控 NoSQL 关系型数据库
保障Redis与MySQL数据一致性的强化方案
在设计时,需要充分考虑到业务场景和系统复杂度,避免为了追求一致性而过度牺牲系统性能。保持简洁但有效的策略往往比采取过于复杂的方案更加实际。同时,各种方案都需要在实际业务场景中经过慎重评估和充分测试才可以投入生产环境。
487 0
|
存储 NoSQL Redis
Docker 部署 Redis
在使用 Docker 部署 Redis 时,为实现数据持久化,需正确挂载容器内的数据目录到宿主机。推荐命令如下: ``` docker run -d --name redis -v /mnt/data/redis:/data -p 6379:6379 redis ``` 该命令将宿主机的 `/mnt/data/redis` 目录挂载到容器的 `/data` 目录,确保 Redis 数据持久化。此路径更通用,适合大多数场景。避免使用不匹配的挂载路径,如 `/var/lib/redis` 或 `/mnt/data/redis` 到非默认目录,以防止数据无法正确持久化。
|
12月前
|
NoSQL 算法 安全
redis分布式锁在高并发场景下的方案设计与性能提升
本文探讨了Redis分布式锁在主从架构下失效的问题及其解决方案。首先通过CAP理论分析,Redis遵循AP原则,导致锁可能失效。针对此问题,提出两种解决方案:Zookeeper分布式锁(追求CP一致性)和Redlock算法(基于多个Redis实例提升可靠性)。文章还讨论了可能遇到的“坑”,如加从节点引发超卖问题、建议Redis节点数为奇数以及持久化策略对锁的影响。最后,从性能优化角度出发,介绍了减少锁粒度和分段锁的策略,并结合实际场景(如下单重复提交、支付与取消订单冲突)展示了分布式锁的应用方法。
919 3
|
存储 监控 NoSQL
Redis集群有哪些方案
1. 主从复制集群 : 读写分离, 一主多从 , 解决高并发读的问题 2. 哨兵集群 : 主从集群的结构之上 , 加入了哨兵用于监控集群状态 , 主节点出现故障, 执行主从切换 , 解决高可用问题 3. Cluster分片集群 : 多主多从 , 解决高并发写的问题, 以及海量数据存储问题 , 每个主节点存储一部分集群数据
|
消息中间件 缓存 NoSQL
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
954 26
|
存储 缓存 NoSQL
云端问道21期方案教学-应对高并发,利用云数据库 Tair(兼容 Redis®*)缓存实现极速响应
云端问道21期方案教学-应对高并发,利用云数据库 Tair(兼容 Redis®*)缓存实现极速响应
448 1