【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博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/653399.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爬虫基础-前端基础

Html是骨骼、css是皮肤、js是肌肉,三者之间的关系可以简单理解为m(html)-v(css)-c(js) 浏览器的加载过程 构建dom树 子资源加载-加载外部的css、图片、js等外部资源 样式渲染-css执行 DOM树 ajax、json、xml AJAX 是一种在无需重新加载整个网页的情况下&#xf…

iOS_Xcode_LLDB调试常用命令

文章目录 结构常用命令:1、流程控制:2、常用命令3、进程信息:4、寄存器:register5、镜像:image6、内存:memory7、符号断点:breakpoint8、内存断点:watchpoint9、Tips: 结…

MySQL 学习记录

基本常识 row-size-limitsblob: BLOB and TEXT columns cannot have DEFAULT values.Instances of BLOB or TEXT columns in the result of a query that is processed using a temporary table causes the server to use a table on disk rather than in memory b…

Linux命令-apt-get命令(Debian Linux发行版中的APT软件包管理工具)

补充说明 apt-get命令 是Debian Linux发行版中的APT软件包管理工具。所有基于Debian的发行都使用这个 包管理系统。deb包可以把一个应用的文件包在一起,大体就如同Windows上的安装文件。 语法 apt-get [OPTION] PACKAGE选项 apt-get install 安装新包 apt-get r…

【vue】图片加载骨架

一、前言 在网速较低或者网站的服务器宽带只有几MB的情况下,网页中的图片加载时,要么空白,要么像打印机一样一行一行地“扫描”出来,为了提升用户体验,可以给图片标签外加一层骨架。 无骨架 有骨架 二、详细设计 每张…

MySQL之索引分类,语法以及SQL性能分析(慢日志,profile,explain)

索引分类 分类含义特定关键字主键索引针对于表中主键创建的索引默认自动创建,只能有一个PRIMARY唯一索引避免同一个表中某数据列中的值重复可以有多个UNIQUE常规索引快速定位特定数据可以有多个全文索引全文索引查找的文本中的关键字,而不是比较索引中的…

Asp.net Core Mvc 7.0 Web 控制器接收Get/Post表单参数

记得.Net 5之前都是直接用 Request.Form 非常方便,但似乎6.0以后就不能这样用了。 1、接受post表单,使用 IFormCollection public IActionResult Login(IFormCollection pms){ViewData["name"] pms["login-username"]; ViewData[&…

如何在 VM 虚拟机中安装 Deft(数字证据及取证工具箱) 操作系统保姆级教程(附链接)

一、VMware Workstation 虚拟机 先得安装 VM 虚拟机,没有的可以参考这篇文章安装 VM 虚拟机 如何在 VM 虚拟机中安装 Win10 操作系统保姆级教程(附链接)https://eclecticism.blog.csdn.net/article/details/135713915 二、Deft 镜像 下载…

Open CASCADE学习| ​提取曲面的PCurve

PCurve这个概念,字面上来理解就是参数曲线(Parametric Curve)。参数空间曲线是在参数曲面的双参数空间中的二维样条曲线。 二维曲线定义的目的只有一个:pCurve,参数曲线。OCC采用参数法构建几何结构,所有的…

【缓存周总结】Redis缓存的使用以及数据安全的处理

前言 Redis非关系型数据库已经是很常见的工具了,项目中用到的也很多,这篇文章系统的分析下使用过程中可能会遇到的问题 一、缓存 缓存是数据交换的缓冲区,是存贮数据的临时地方,一般读写性能较高。 我们项目中引用的Redis目的就是…

【前端web入门第二天】02 表单-input标签-单选框-多选框

表单 文章目录: 1.input标签基本使用 1.1 input标签占位文本1.2 单选框 radio 1.3 多选框 checkbox 作用:收集用户信息。 使用场景: 登录页面注册页面搜索区域 1.input标签基本使用 input标签type属性值不同&#xff0c;则功能不同。 <input type"..."&g…

Android Okhttp断点续传

什么是断点续传 指的是在上传/下载时&#xff0c;将任务&#xff08;一个文件或压缩包&#xff09;人为的划分为几个部分&#xff0c;每一个部分采用一个线程进行上传/下载&#xff0c;如果碰到网络故障&#xff0c;可以从已经上传/下载的部分开始继续上传/下载未完成的部分&a…

RabbitMQ面试

1. 什么是RabbitMQ RabbitMQ是使用Erlang语言开发的&#xff0c;基于AMQP高级消息队列的开源消息中间件 Erlang语言主要用于开发并发和分布式系统&#xff0c;在电信领域得到广泛应用 2.什么是消息中间件 消息中间件是在分布式系统中传递消息的软件服务。它允许不同的系统组件…

机器学习 | 如何使用 Seaborn 提升数据分析效率

Seaborn和Matplotlib都是Python可视化库&#xff0c;它们都可以用于创建各种类型的图表。但是&#xff0c;Seaborn 和Matplotlib在概念和设计上有一些不同。 Matplotlib虽然已经是比较优秀的绘图库了&#xff0c;但是它有个今人头疼的问题&#xff0c;那就是API使用过于复杂&am…

面试经典 150 题 ---- 移除元素

面试经典 150 题 ---- 移除元素 移除元素方法一&#xff1a;双指针方法二&#xff1a;双指针优化 移除元素 方法一&#xff1a;双指针 题目要求在原数组的基础进行元素的删除&#xff0c;所以输出的数组长度一定小于原数组的长度&#xff0c;因此可以使用双指针&#xff0c;r…

CMMI、SPCA、CSMM,三种认证的差异有哪些?

在当今的企业环境中&#xff0c;体系认证已经成为了一个重要的议题。其中&#xff0c;CMMI、SPCA和CSMM是三种广泛使用的认证&#xff0c;它们在各自领域内具有特定的目标和要求&#xff0c;今天擎标就带大家了解一下这三种认证之间的差异。 CMMI、CSMM和SPCA分别是什么 1、C…

htb Pov wp简记

最近懒得飞起 不想写太细&#xff0c;有师傅想看完整的可以留个言或者私信 我再补补… user部分 nmap只扫到一个端口 http/80 目录没扫出什么 vhost扫出dev来 在抓包访问页面邮箱丢出去的包有包含asp.net的viewstate&#xff0c;这里一开始我还没在意&#xff0c;后来发现有个…

【YOLO系列算法俯视视角下舰船目标检测】

YOLO系列算法俯视视角下舰船目标检测 数据集和模型YOLO系列算法俯视视角下舰船目标检测YOLO系列算法俯视视角下舰船目标检测可视化结果 数据集和模型 数据和模型下载&#xff1a; YOLOv6俯视视角下舰船目标检测训练好的舰船目标检测模型舰船目标检测数据YOLOv7俯视视角下舰船…

AGP更改gradle版本无效的解决方案

从Github下载了一个项目&#xff0c;非常激进&#xff0c;AGP版本8.4.0&#xff0c;而我的AS只支持到8.2.0 详见&#xff1a;https://developer.android.com/build/releases/gradle-plugin?buildsystemndk-build&hlzh-cn#android_gradle_plugin_and_android_studio_compa…

微服务架构实施攻略:如何选择合适的微服务数据管理策略?

随着业务的快速发展和系统的日益复杂&#xff0c;传统的单体应用逐渐显露出瓶颈&#xff0c;已无法满足现代软件研发的需求。微服务架构作为一种灵活、可扩展的解决方案&#xff0c;通过将复杂系统拆分为一系列小型服务来提高系统的可伸缩性、灵活性和可维护性。在实施微服务架…