前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为什么 Redis 集群要使用反向代理? 看这篇就明白了!

为什么 Redis 集群要使用反向代理? 看这篇就明白了!

作者头像
芋道源码
发布2022-03-10 12:41:14
1.1K0
发布2022-03-10 12:41:14
举报
文章被收录于专栏:芋道源码1024芋道源码1024

点击上方“芋道源码”,选择“设为星标

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 10:33 更新文章,每天掉亿点点头发...

源码精品专栏

来源:www.cnblogs.com/Courage

129/p/14351545.html


如果没有反向代理,一台Redis可能需要跟很多个客户端连接:

看着是不是很慌?看没关系,主要是连接需要消耗线程资源,没有代理的话,Redis要将很大一部分的资源用在与客户端建立连接上,redis的高可用和可扩展无论是自带的Redis Sentinel还是Redis Cluster都要求客户端进行额外的支持,而目前基本上没有合适的客户端能够做这些事情,客户端来做这些事情也并不合适,它会让维护变得特别困难。

因此在客户端和redis服务端之间加一层代理成了一种理想的方案,代理屏蔽后端Redis实现细节向客户端提供redis服务,可以完美的解决Redis的高可用和扩展性问题,同时代理的引入也使得Redis维护变得更加简单。

于是乎,有了代理:

如何使用代理?

很简单,将请求连接到调度代理器上,由Proxy负责将请求转发到后面的Redis服务实例,图示:

又有了新的问题,Proxy挂了可咋整?

所以Proxy又需要做集群,甚至前面可以加一层负载均衡,负载均衡嘛,单机也存在单点故障等问题,一个Director肯定不行,搞不好又挂了,所以整一个主备,备机通过KeepAlived来检测主LVS健康状况,出了问题顶上去。

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能。 项目地址:https://github.com/YunaiV/ruoyi-vue-pro

Redis代理插件

Redis代理插件有很多,这儿简单介绍几款

predixy

高性能全特征redis代理,支持Redis Sentinel和Redis Cluster

twemproxy

快速、轻量级memcached和redis代理

codis

redis集群代理解决方案

redis-cerberus

Redis Cluster代理

基于微服务的思想,构建在 B2C 电商场景下的项目实战。核心技术栈,是 Spring Boot + Dubbo 。未来,会重构成 Spring Cloud Alibaba 。 项目地址:https://github.com/YunaiV/onemall

代理详细功能对比

特性

predixy

twemproxy

codis

redis-cerberus

高可用

Redis Sentinel或Redis Cluster

一致性哈希

Redis Sentinel

Redis Cluster

可扩展

Key哈希分布或Redis Cluster

Key哈希分布

Key哈希分布

Redis Cluster

开发语言

C++

C

GO

C++

多线程

事务

Redis Sentinel模式单Redis组下支持

不支持

不支持

不支持

BLPOP/BRPOP/BLPOPRPUSH

支持

不支持

不支持

支持

Pub/Sub

支持

不支持

不支持

支持

Script

支持load

不支持

不支持

不支持

Scan

支持

不支持

不支持

不支持

Select DB

支持

不支持

支持

Redis Cluster只有一个DB

Auth

支持定义多个密码,给予不同读写及管理权限和Key访问空间

不支持

同redis

不支持

读从节点

支持,可定义丰富规则读指定的从节点

不支持

支持,简单规则

支持,简单规则

多机房支持

支持,可定义丰富规则调度流量

不支持

有限支持

有限支持

统计信息

丰富

丰富

丰富

简单

简单来说,predixy既支持Redis Sentinel也支持Redis Cluster

  • 后端为Redis Sentinel监控的一组Redis,功能完全等同于原始Redis
  • 后端为Redis Sentinel监控的多组Redis,则有部分功能受限
  • 后端为Redis Cluster,功能完全等同于Redis Cluster


欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢

已在知识星球更新源码解析如下:

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

代码语言:javascript
复制
文章有帮助的话,在看,转发吧。谢谢支持哟 (*^__^*)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 芋道源码 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 如何使用代理?
  • Redis代理插件
  • 代理详细功能对比
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档