Redis 代理( Twemproxy 或 Redis Proxy)

文章目录

  • Twemproxy
    • Twemproxy 的主要特性
    • Twemproxy 的部署架构
    • Twemproxy 的配置示例
        • 安装 Twemproxy
        • 配置文件(YAML 示例)
        • 启动 Twemproxy
      • Twemproxy 的优缺
        • 优点
        • 缺点
  • Redis Proxy
    • Redis Proxy 的主要特性
    • Redis Proxy 的部署架构
    • Redis Proxy 的配置和使用
      • Twemproxy 和 Redis Proxy 的对比
      • 总结

  • Redis 代理(如 TwemproxyRedis Proxy)是 Redis 集群的中间层,用于简化客户端与 Redis 集群之间的交互,提供负载均衡、分片、连接池管理等功能。以下是关于 TwemproxyRedis Proxy 的详细介绍:

Twemproxy

  • Twemproxy 是由 Twitter 开发的一款高性能中间代理层,支持 Redis 和 Memcached。它的核心功能是对分布式 Redis 进行透明的代理,客户端只需要连接到 Twemproxy 而无需关心分片或密码管理。

Twemproxy 的主要特性

  1. 分片支持
    • 客户端与 Twemproxy 交互,Twemproxy 自动将请求分配到不同的 Redis 实例。
    • 支持一致性哈希算法,保证数据分片的均匀分布。
  2. 连接池管理
    • 客户端到 Twemproxy 是短连接,而 Twemproxy 到 Redis 实例是长连接,减少 Redis 的连接压力。
  3. 负载均衡
    • 根据配置分配请求到多个 Redis 实例,实现负载均衡。
  4. 简单配置
    • 通过 YAML 文件配置 Redis 集群和分片规则。
  5. 高性能
    • 使用 C 语言编写,单线程处理,性能接近于 Redis 原生连接。

Twemproxy 的部署架构

客户端  <-->  Twemproxy  <-->  Redis 实例 1<-->  Redis 实例 2<-->  Redis 实例 3

客户端只需连接到 Twemproxy,所有请求由 Twemproxy 分发到对应的 Redis 实例。


Twemproxy 的配置示例

假设有 3 个 Redis 实例,地址分别为 127.0.0.1:6379127.0.0.1:6380127.0.0.1:6381,每个实例配置不同的密码。

安装 Twemproxy
  1. 下载并安装 Twemproxy:
    git clone https://github.com/twitter/twemproxy.git
    cd twemproxy
    autoreconf -fvi
    ./configure
    make
    sudo make install
    
  2. 检查安装:
    nutcracker --version
    
配置文件(YAML 示例)

/etc/nutcracker.yml 中创建如下配置文件:

redis_pool:listen: 127.0.0.1:22121  # Twemproxy 监听的地址和端口hash: fnv1a_64          # 使用的哈希算法distribution: ketama    # 一致性哈希timeout: 2000           # 请求超时时间(毫秒)redis: true             # 是否为 Redis(true 表示支持 Redis 协议)servers:- 127.0.0.1:6379:1 redis_auth=password1 # 第一个 Redis 实例,密码 password1- 127.0.0.1:6380:1 redis_auth=password2 # 第二个 Redis 实例,密码 password2- 127.0.0.1:6381:1 redis_auth=password3 # 第三个 Redis 实例,密码 password3
  • listen:客户端连接 Twemproxy 的地址和端口。
  • servers
    • 每个 Redis 实例的地址和端口,格式为 host:port:weight redis_auth=密码
    • weight 表示分片权重,通常为 1。
启动 Twemproxy

启动命令:

nutcracker -c /etc/nutcracker.yml

测试是否运行成功:

redis-cli -p 22121

连接成功后,Twemproxy 会根据分片规则自动分发请求到后端的 Redis 实例。


Twemproxy 的优缺

优点
  1. 透明分片:客户端无需感知分片规则。
  2. 密码管理:支持每个 Redis 实例独立的密码认证。
  3. 高性能:C 语言实现,延迟低,资源占用小。
  4. 部署简单:只需配置一个代理层,不需要修改 Redis 实例。
缺点
  1. 单线程:Twemproxy 是单线程的,如果客户端并发过高,可能成为性能瓶颈。
  2. 不支持 Redis Cluster:Twemproxy 仅支持分片模式,不支持 Redis 官方的 Cluster 模式。
  3. 功能有限:不支持复杂的 Redis 命令(如 WATCHMULTI 等事务命令)。

Redis Proxy

  • Redis Proxy 是一种较新的 Redis 代理方案,专门设计用于解决 Twemproxy 的一些局限性。它支持更多 Redis 特性,例如 Redis Cluster 和事务。

Redis Proxy 的主要特性

  1. 支持 Redis Cluster:原生支持 Redis Cluster 模式,可以自动处理分片和节点迁移。
  2. 多线程支持:支持多线程,解决了 Twemproxy 的单线程性能瓶颈问题。
  3. 全命令支持:支持 Redis 的所有命令,包括事务、脚本等。
  4. 灵活认证:支持对每个 Redis 实例单独配置密码。
  5. 高性能:使用高效的网络模型,性能更接近于原生 Redis。

Redis Proxy 的部署架构

  • Redis Proxy 的架构与 Twemproxy 类似,但支持更多特性:
客户端  <-->  Redis Proxy  <-->  Redis Cluster<-->  Redis 实例 1<-->  Redis 实例 2<-->  Redis 实例 3
  • 客户端连接 Redis Proxy,所有请求由 Proxy 自动分发到 Redis 实例或 Cluster 中的节点。

Redis Proxy 的配置和使用

  • Redis Proxy 的部署依赖于具体实现(如 KeyDB Proxy),以下是 KeyDB Proxy 的简单配置示例:
  1. 安装 KeyDB Proxy

    • 下载并安装 KeyDB(KeyDB 是 Redis 的一个分支,提供 Proxy 功能)。
    wget https://download.keydb.dev/keydb-6.3.2.tar.gz
    tar -xvzf keydb-6.3.2.tar.gz
    cd keydb-6.3.2
    make
    
  2. 配置文件

    • 配置文件支持 Redis 实例的地址、密码和 Cluster 支持。示例:
    bind 127.0.0.1
    port 6379# 配置后端 Redis 实例
    replicaof 127.0.0.1 6379 requirepass password1
    replicaof 127.0.0.2 6380 requirepass password2
    replicaof 127.0.0.3 6381 requirepass password3
    
  3. 启动 KeyDB Proxy

    ./src/keydb-server /path/to/your/config.conf
    
  4. 测试连接:使用 redis-cli 连接代理服务,测试其分片和密码管理功能。


Twemproxy 和 Redis Proxy 的对比

特性TwemproxyRedis Proxy
分片支持基于一致性哈希支持 Redis Cluster 原生分片
多线程支持单线程支持多线程
全命令支持不支持复杂命令(事务、脚本等)支持 Redis 全命令
部署复杂度简单(支持分片模式)稍复杂(适用于 Redis Cluster 模式)
性能高效,但单线程可能成为瓶颈更高效,适用于高并发场景
适用场景传统分片场景,不适用 Redis Cluster 场景分布式高性能场景,适合 Redis Cluster

总结

  • 如果你的 Redis 集群是分片模式,且功能需求简单,建议使用 Twemproxy
  • 如果你的 Redis 集群是 Cluster 模式,或对性能和复杂命令支持有更高要求,建议选择 Redis Proxy(如 KeyDB Proxy)。

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

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

相关文章

【数据库】Unity 使用 Sqlite 数据库

1.找到需要三个 DLL Mono.Data.Sqlite.dllSystem.Data.dllsqlite3.dll 上面两个dll可在本地unity安装目录找到&#xff1a; C:\Program Files\Unity\Hub\Editor\2022.3.xxf1c1\Editor\Data\MonoBleedingEdge\lib\mono\unityjit-win32 下面dll可在sqlite官网下载到&#xff…

冒泡排序基础与实现

目录 1. 原理图 ​编辑 2. 什么是冒泡排序 3. 工作原理 3.1 具体步骤 3.2 时间复杂度 3.3 空间复杂度 4. 代码实现 5. 总结 1. 原理图 2. 什么是冒泡排序 冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单的排序算法&#xff0c;它通过重复地遍历要排序的列表&am…

忘记了PDF文件的密码,怎么办?

PDF文件可以加密&#xff0c;大家都不陌生&#xff0c;并且大家应该也都知道PDF文件有两种密码&#xff0c;一个打开密码、一个限制编辑密码&#xff0c;因为PDF文件设置了密码&#xff0c;那么打开、编辑PDF文件就会受到限制。忘记了PDF密码该如何解密&#xff1f; PDF和offi…

【论文笔记】Sign Language Video Retrieval with Free-Form Textual Queries

&#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&#xff0c;为生民立命&#xff0c;为往圣继绝学&#xff0c;为万世开太平。 基本信息 标题: Sign Language Video Retr…

openEuler22.03系统使用Kolla-ansible搭建OpenStack

Kolla-ansible 是一个利用 Ansible 自动化工具来搭建 OpenStack 云平台的开源项目&#xff0c;它通过容器化的方式部署 OpenStack 服务&#xff0c;能够简化安装过程、提高部署效率并增强系统的可维护性。 前置环境准备&#xff1a; 系统:openEuler-22.03-LTS-SP4 配置&…

记录一下vue2项目优化,虚拟列表vue-virtual-scroll-list处理10万条数据

文章目录 封装BrandPickerVirtual.vue组件页面使用组件属性 select下拉接口一次性返回10万条数据&#xff0c;页面卡死&#xff0c;如何优化&#xff1f;&#xff1f;这里使用 分页 虚拟列表&#xff08;vue-virtual-scroll-list&#xff09;&#xff0c;去模拟一个下拉的内容…

【vue】vue的基础语法--上

目录 一、Vue的模板语法 1. 学会使用VsCode 2. 文本插值 3. 使用JavaScript表达式 4. 无效 5. 原始html 二、 属性绑定 1. 属性绑定 2.简写方案 3.布尔型Attribute 4. 动态邦定多个值 三、条件渲染 1. v-if 2. v-else 3. v-else-if 4. v-show 5. v-if VS v-sho…

【ANGULAR网站开发】初始环境搭建(SpringBoot)

1. 初始化SpringBoot 1.1 创建SpringBoot项目 清理spring-boot-starter-test&#xff0c;有需要的可以留着 1.2 application.properties 将application.properties改为yaml&#xff0c;个人习惯问题&#xff0c;顺便设置端口8888&#xff0c;和前端设置的一样 server:por…

OpenCV的对比度受限的自适应直方图均衡化算法

OpenCV的对比度受限的自适应直方图均衡化&#xff08;CLAHE&#xff09;算法是一种图像增强技术&#xff0c;旨在改善图像的局部对比度&#xff0c;同时避免噪声的过度放大。以下是CLAHE算法的原理、步骤以及示例代码。 1 原理 CLAHE是自适应直方图均衡化&#xff08;AHE&…

1.1.2 配置静态IP和远程SSH登录

一、开放22端口 方法一&#xff1a;开放SSH服务&#xff08;推荐&#xff0c;不需要改动&#xff09; 查看配置文件&#xff0c;已经默认开放ssh服务端口了&#xff0c;ssh默认为22端口&#xff0c;所以不需要改动文件 方法二&#xff1a;开放22端口 &#xff08;1&#xff0…

Soildworks的学习【2025/1/12】

右键空白处&#xff0c;点击选项卡&#xff0c;即可看到所有已调用的选项卡&#xff1a; 点击机械小齿轮选项卡&#xff0c;选择文档属性&#xff0c;选择GB国标&#xff1a; 之后点击单位&#xff0c;选择MMGS毫米单位&#xff1a; 窗口右下角有MMGS&#xff0c;这里也可以选择…

web前端第五次作业---制作菜单

制作菜单 代码: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style…

GAN的应用

5、GAN的应用 ​ GANs是一个强大的生成模型&#xff0c;它可以使用随机向量生成逼真的样本。我们既不需要知道明确的真实数据分布&#xff0c;也不需要任何数学假设。这些优点使得GANs被广泛应用于图像处理、计算机视觉、序列数据等领域。上图是基于GANs的实际应用场景对不同G…

分治算法——优选算法

本章我们要学习的是分治算法&#xff0c;顾名思义就是分而治之&#xff0c;把大问题分为多个相同的子问题进行处理&#xff0c;其中我们熟知的快速排序和归并排序用的就是分治算法&#xff0c;所以我们需要重新回顾一下这两个排序。 一、快速排序&#xff08;三路划分&#xf…

解决el-table表格数据量过大导致页面卡顿问题 又名《umy-ui---虚拟表格仅渲染可视区域dom的神》

后台管理系统的某个页面需要展示多个列表 数据量过多 页面渲染dom卡顿 经调研发现两个组件 pl-table和umy-ui &#xff08;也就是u-table&#xff09; 最终决定使用umy-ui 它是专门基于 Vue 2.0 的桌面端组件库 流畅渲染表格万级数据 而且他是对element-ui的表格做了二次优化…

单元测试概述入门

引入 什么是测试&#xff1f;测试的阶段划分&#xff1f; 测试方法有哪些&#xff1f; 1.什么是单元测试&#xff1f; 单元测试&#xff1a;就是针对最小的功能单元&#xff08;方法&#xff09;&#xff0c;编写测试代码对其正确性进行测试。 2.为什么要引入单元测试&#x…

Xcode 正则表达式实现查找替换

在软件开发过程中&#xff0c;查找和替换文本是一项常见的任务。正则表达式&#xff08;Regular Expressions&#xff09;是一种强大的工具&#xff0c;可以帮助我们在复杂的文本中进行精确的匹配和替换。Xcode 作为一款流行的开发工具&#xff0c;提供了对正则表达式的支持。本…

基于微信小程序的电影交流平台设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

GAMES101学习笔记(三):Rasterization 光栅化(三角形的离散化、抗锯齿、深度测试)

文章目录 视口变换 Viewport三角形网格 Triangle Mesh采样 Sampling走样/反走样 Aliasing/Antialiasing采样频率、空间域与频率域深入理解采样、走样、反走样反走样总结深度测试 Depth testing 课程资源&#xff1a;GAMES101-现代计算机图形学入门-闫令琪 Lec5 ~ Lec6 学习笔记…

《分布式光纤传感:架设于桥梁监测领域的 “智慧光网” 》

桥梁作为交通基础设施的重要组成部分&#xff0c;其结构健康状况直接关系到交通运输的安全和畅通。随着桥梁建设规模的不断扩大和服役年限的增长&#xff0c;桥梁结构的安全隐患日益凸显&#xff0c;传统的监测方法已难以满足对桥梁结构健康实时、全面、准确监测的需求。分布式…