当前位置: 首页 > news >正文

【Redis】Redis集群方案应该怎么做 都有哪些方案

🍎个人博客:个人主页

🏆个人专栏:Redis

⛳️  功不唐捐,玉汝于成


目录

前言

正文

(1)twemproxy

(2)codis

(3)redis cluster3.0自带的集群

(4)在业务代码层实现

结语

 我的其他博客


前言

在构建大规模分布式系统时,选择合适的Redis集群方案至关重要。不同的方案有着各自的特点和适用场景,从代理方式的twemproxy到支持节点数量变化的codis,再到Redis Cluster自带的集群解决方案,以及在业务代码层实现的方式,每种都有其独特的优势和挑战。本篇博客将深入探讨这些不同的Redis集群方案,分析它们的设计原理、使用方法以及适用场景,为读者提供在构建分布式系统时的决策参考

正文

(1)twemproxy

        大概概念是,它类似于一个代理方式,使用方法和普通redis无任何区别,设置好它下属的多个redis实例后,使用时在本需要连接redis的地方改为连接twemproxy,它会以一个代理的身份接收请求并使用一致性hash算法,将请求转接到具体redis,将结果再返回twemproxy。使用方式简便(相对redis只需修改连接端口),对旧项目扩展的首选。 问题:twemproxy自身单端口实例的压力,使用一致性hash后,对redis节点数量改变时候的计算值的改变,数据无法自动移动到新的节点。

(2)codis

        目前用的最多的集群方案,基本和twemproxy一致的效果,但它支持在 节点数量改变情况下,旧节点数据可恢复到新hash节点。

(3)redis cluster3.0自带的集群

        特点在于他的分布式算法不是一致性hash,而是hash槽的概念,以及自身支持节点设置从节点。具体看官方文档介绍。

(4)在业务代码层实现

        起几个毫无关联的redis实例,在代码层,对key 进行hash计算,然后去对应的redis实例操作数据。 这种方式对hash层代码要求比较高,考虑部分包括,节点失效后的替代算法方案,数据震荡后的自动脚本恢复,实例的监控,等等。

结语

在Redis集群方案的选择中,没有一种大小适合所有。twemproxy的简便使用和对旧项目扩展的友好性使其成为一个理想的选择,但对于单端口实例的压力和节点数量变化时的数据迁移问题需要特别关注。codis在效果上与twemproxy相似,但它独有的支持节点数量变化下旧节点数据的可恢复性,为动态环境下的系统提供了更多的弹性。Redis Cluster自带的集群方案则通过hash槽的概念和支持从节点的特性,为分布式系统提供了更为灵活的解决方案。而在业务代码层实现的方式虽然灵活,但对开发者的要求较高,需要考虑到失效替代、数据震荡自动恢复等方面。在选择合适的Redis集群方案时,需根据具体业务需求和系统特点综合考虑,以确保系统的性能、可靠性和扩展性得到最优的平衡。

 我的其他博客

【MySQL】数据库规范化的三大法则 — 一探范式设计原则-CSDN博客

【JAVA】线程的run()和start()有什么区别?-CSDN博客

【日常聊聊】程序员必备的面试技巧:如何在面试战场上脱颖而出-CSDN博客

【JAVA】Java8开始ConcurrentHashMap,为什么舍弃分段锁-CSDN博客

【JAVA】怎么确保一个集合不能被修改-CSDN博客

【Web开发】会话管理与无 Cookie 环境下的实现策略-CSDN博客

【Mybatis】Mybatis如何防止sql注入-CSDN博客

【软件工程】航行敏捷之路:深度解析Scrum框架的精髓-CSDN博客

【Spring】理解IoC与AOP:构建灵活而模块化的软件架构-CSDN博客

相关文章:

  • 安装配置hive
  • 电视盒子哪个好?博主分享口碑网络电视盒子推荐
  • 软件工程知识梳理0-概述
  • Redis核心技术与实战【学习笔记】 - 6.Redis 的统计操作处理
  • C# wpf 字体图标预览,html字符与unicode转换
  • 代码随想录训练营第三十八天打卡| 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯
  • React + react-device-detect 实现设备特定的渲染
  • Python——将Pyaudio的frame音频数据转换成wave格式
  • SpringBoot使用Rabbit详解含完整代码
  • LVS负载均衡对udp流量进行参数调整一例
  • 点击侧边栏菜单跳转到main 页面
  • iMazing 3中文版双平台版本同步,iOS 设备在 Windows 上也能自动备份了
  • C# 使用 MailKit 接收邮件(附demo)
  • ASP.NET Core 过滤器 使用依赖项注入
  • 【Linux取经路】进程控制——进程等待
  • Python处理图片生成天际线(2024.1.29)
  • 大力推荐的好用API,含免费次数
  • 网络层 IP协议(1)
  • Shell 正则表达式及综合案例及文本处理工具
  • 【ASP.NET Core 基础知识】--身份验证和授权--授权和策略
  • 第三届“老山国际春茶节”活动在云南麻栗坡举办
  • 体坛联播|郑钦文收获红土赛季首胜,国际乒联公布财报
  • 名帅大挪移提前开启,意属皇马的阿隆索会是齐达内第二吗
  • 追光|铁皮房、土操场,这有一座“筑梦”摔跤馆
  • 习近平抵达莫斯科伏努科沃专机机场发表书面讲话(全文)
  • 李云泽:对受关税影响较大、经营暂时困难的市场主体,一企一策提供精准服务