[Redis]-四种部署方式

2023-11-19

森格 | 2022年11月

本文是对Redis部署方式的学习,主要学习基本原理,以及几种方式的优缺点。


一、部署方式概况

在这里插入图片描述
对于Redis的安装部署主要可以分为单机版、主从同步、Sentinel哨兵、Cluster集群部署四种方式,下面一起看下几种方式的优缺点。


二、部署方式介绍

2.1 单机版

优点:

1)架构简单、部署方便

缺点:

1)性能瓶颈。高性能受限于CPU的处理能力。

2)数据的不可靠性。在缓存使用,进程重启会造成数据丢失。

2.2 主从同步

在这里插入图片描述
优点:

1)高可靠性。主库发生故障,可以进行主备切换,保证服务平稳运行;合理备份,可以解决数据丢失。

2)读写分离。从节点可以拓展主库节点的读能力。

缺点:

1)故障恢复复杂。如果没有HA系统,主库故障,先需要手动将一个节点晋升为主节点,再需要通知业务方变更配置,其次让其他从节点复制新主库节点。

2)主库的写与存储受单机限制

2.3 哨兵模式

**加粗样式**
一种原生HA解决方案,部署框架主要包括两部分:哨兵集群和数据集群,哨兵集群节点数为奇数个,最少3个。

优点:

1)Sentinel哨兵集群部署简单。

2)解决了Redist主从模式的HA问题。

缺点:

1)原理理解繁琐

2)资源浪费。数据节点的slave作为备份节点不提供服务。

3)没有解决读写分离

2.4 Cluster集群模式

在这里插入图片描述

Redis Cluster可以起到很好的负载均衡的目的。采用了虚拟槽分区,所有键根据hash函数到0~16383。

优点:

1)去中心化

2)数据按slot动态存储。节点间数据共享,可动态调整数据分布。

3)可拓展性。可线性拓展到1000多节点。

4)高可用性。故障时可以自动Failover,节点间通过Goosip协议交换状态信息,使用投票机制完成slave到master的晋升。

缺点:

1)数据异步复制,不强调数据的一致性。

2)Client实现复杂

三、部署方式对比

经过上述介绍,几种部署方式的对比如表3-1:

表3-1 部署方式对比

模式 优点 缺点
单机版 架构简单,部署方便 性能瓶颈、数据不可靠
主从复制 高可靠性,读写分离 故障恢复复杂,主库的写跟存受单机限制
Sentinel 哨兵 集群部署简单,HA 原理繁琐,slave存在资源浪费,不能解决读写分离问题
Redis Cluster 去中心化,数据动态存储solt,可扩展,高可用 数据异步复制,Client实现复杂

以上是对Redis部署方式的基本学习,后续仍需要在实践中去感受几种方式的不同之处。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[Redis]-四种部署方式 的相关文章

  • Redis部署配置-主从复制

    目前我有两台服务器 我已经部署了基于node js Express JS的Web服务API 我正在使用 Redis 来缓存 JSON 字符串 将此设置部署到生产中的最佳选择是什么 我懂了here https stackoverflow co
  • 使用brew在MacOSx上安装Redis JSON

    如何使用brew 在 macOSx 上安装 RedisJSON 如何在不编译redis的情况下启用redis上的模块 我不想使用 docker 客户端 Redis Stack 可能是最简单的方法 它不仅仅是 RedisJSON 还包括 Re
  • 是否有可嵌入的 Java 替代 Redis?

    根据这个线程 https stackoverflow com questions 3047010 best redis library for java 如果我想从Java中使用Redis Jedis是最好的选择 然而 我想知道是否有任何库
  • Docker-compose Predis 不通过 PHP 连接

    我正在尝试使用 docker compose 将 PHP 与 redis 连接 docker compose yml version 2 services redis image redis 3 2 2 php image company
  • 如果另一个键中的计数器低于零,则从集合中原子删除一个项目?

    雷迪斯2 0 3 在我的 Redis DB 中 我有一组项目 每个项目都有一个与其关联的计数器 MULTI SADD items set foo INCRBY items foo 10000 EXEC 新项目会以随机间隔添加到集合中 当用户
  • Redis INCRBY 有限制

    我想知道是否有一种方法可以通过我的应用程序的单次往返在 Redis 中执行此操作 对于给定的键K 其可能值V是范围内的任意整数 A B 基本上 它有上限和下限 When an INCRBY or DECRBY发出命令 例如INCRBY ke
  • 从redis中检索大数据集

    一台服务器上的应用程序查询另一台服务器上运行的 Redis 查询的结果数据集约为 250kzrangebyscore objects locations inf inf这在应用程序服务器上似乎需要 40 秒 当使用命令执行时redis cl
  • 如何测试我的 Redis 缓存是否正常工作?

    我已经安装了 django redis cache 和 redis py 我遵循了 Django 的缓存文档 据我所知 以下设置就是我所需要的 但我如何判断它是否正常工作 设置 py CACHES default BACKEND redis
  • 在 Kubernetes/Openshift 中将客户端-服务器流量保持在同一区域的最佳方法?

    我们运行兼容 Kubernetes OKD 3 11 的本地 私有云集群 其中后端应用程序与用作缓存和 K V 存储的低延迟 Redis 数据库进行通信 新的架构设计将在两个地理上分布的数据中心 区域 之间平均划分工作节点 我们可以假设节点
  • 无法启动redis.service:单元redis-server.service被屏蔽

    我在 ubuntu 16 04 上安装了 Redis 服务器 但是当我尝试使用启动redis服务时 sudo systemctl start redis 我收到消息 Failed to start redis service Unit re
  • Node Js:Redis 作业在完成其任务后未完成

    希望你们做得很好 我在我的 Nodejs 项目中实现了 BullMQ Bull 的下一个主要版本 来安排发送电子邮件的作业 例如 发送忘记密码请求的电子邮件 所以 我编写了如下所示的代码 用户服务 await resetPasswordJo
  • 为什么 Redis TimeSeries 不捕获聚合中的最后一个元素?

    我试图了解 Redis 的时间序列规则创建的工作原理 但我很困惑为什么 Redis 会忽略聚合中的最后一项 并想知道这是否是预期的行为 我在中创建了示例代码redis cli为了显示 127 0 0 1 6379 gt FLUSHALL O
  • redis - 使用哈希

    我正在使用 redis 为我的 Web 应用程序实现社交流和通知系统 我是 redis 的新手 我对哈希值及其效率有一些疑问 我读过这篇很棒的文章Instagram 帖子 http instagram engineering tumblr
  • 如何使 Redis 缓存中数据层次结构(树)的部分内容无效

    我有一些产品数据 需要在 Redis 缓存中存储多个版本 数据由 JSON 序列化对象组成 获取普通 基本 数据的过程很昂贵 将其定制为不同版本的过程也很昂贵 因此我想缓存所有版本以尽可能进行优化 数据结构看起来像这样 BaseProduc
  • redis 2.8.7 Linux Sentinel环境配置问题,如何使其自启动,应该订阅什么?

    现在我们尝试使用 redis 2 8 7 作为缓存存储 来自使用 booksleeve 客户端的 NET Web 应用程序 目前看来这是一个非常有趣和令人兴奋的任务 redis 文档非常好 但由于缺乏真正的实践经验 我确实有几个关于如何正确
  • 在 Redis 上为 Django 和 Express.js 应用程序共享会话存储

    我想创建一个包含一些登录用户的 Django 应用程序 另一方面 由于我想要一些实时功能 所以我想使用 Express js 应用程序 现在的问题是 我不希望身份不明的用户访问 Express js 应用程序的日期 因此 我必须在 Expr
  • 想要在后台不间断地运行redis-server

    我已经下载了 redis 2 6 16 tar gz 文件并安装成功 安装后我运行 src redis server 它工作正常 但我不想每次都手动运行 src redis server 而是希望 redis server 作为后台进程持续
  • Redis+Docker+Django - 错误 111 连接被拒绝

    我正在尝试使用 Redis 作为使用 Docker Compose 的 Django 项目的 Celery 代理 我无法弄清楚我到底做错了什么 但尽管控制台日志消息告诉我 Redis 正在运行并接受连接 事实上 当我这样做时 docker
  • Amazon Elasticache Redis 集群 - 无法获取端点

    我需要获取 Amazon Elasticache 中 Redis 集群的终端节点 以下代码适用于 Memcached 集群 但不适用于 Redis import com amazonaws auth AWSCredentials impor
  • Redis 队列工作程序在 utcparse 中崩溃

    我正在尝试按照以下教程获得基本的 rq 工作 https blog miguelgrinberg com post the flask mega tutorial part xxii background jobs https blog m

随机推荐

  • mysql 临时表权限_MySQL临时表浅析

    一 MySQL如何使用内部临时表 在某些情况下 服务器会在处理query的时候组建内部临时表 这种表有两种存在形式 1 位于内存中 使用的是MEMORY存储引擎 内存临时表 2 位于磁盘上 使用MyISAM存储引擎 硬盘临时表 服务器可能在
  • 再介绍一种低成本的负电源电路

    前面介绍了几种产生负电源的方法 几种常用的产生负电源的方法 今天再来介绍一种低成本的负电源电路 用分离元件搭建 配合程序控制 实现正电源转负电源 先看电路 图中Q1 D1 L2和C1构成最基本的Buck Boost电路 L1 C2为一级LC
  • myeclipse非正常关闭处理办法

    myeclipse正常或非正常关闭后 再次运行 不显示启动时的logo和读条 进入主页面后程序基本就卡死 无法正常运行 解决办法 方法一 修改工作空间在刚启动Myeclipse的时候会有一个选择工作空间的地方 换一个新的工作空间即可 若是原
  • Redis7之介绍(一)

    一 介绍 1 1 基本了解 Remote Dictionary Server 远程字典服务 是完全开源的 使用ANSIC语言编写遵守BSD协议 是一个高性能的Key Value数据库提供了丰富的数据结构 例如String Hash List
  • 面试题: v-if和v-show有什么区别?

    面试题 v if和v show有什么区别 1 v if能够控制是否生成vnode 也就间接控制了是否生成对应的dom 当v if为true时 会生成对应的vnode 并生成对应的dom元素 当其为false时 不会生成对应的vnode 自然
  • openwrt 缺少 libc.so.6 libm.so.6 libpthread.so.0

    在开发openwrt时 编译内核的时候 自己写的代码在openwrt 编译报错 提示缺少依赖库文件 Package Gateway Auto is missing dependencies for the following librari
  • flutter版本号对比

    版本号对比 Future
  • 筛选素数之欧拉筛法 python实现 附带证明

    返回类型 列表 说明 返回小于upperBound的所有素数 def ouLaShai upperBound filter False for i in range upperBound 1 primeNumbers for num in
  • Java学习心得10——多态

    多态 一种类型的变量可以掌管多种类型的对象 这就是多态 说人话 直观理解成多种形态 人类就是多态的 黄种人 白种人 黑种人都是属于人类 人类这一个类可以表示黄种人 白种人 黑种人这三个类 这不就是多态多种形态吗 回到编程 Animal 动物
  • 【华为OD机试真题 python】数字加减游戏【2022 Q4

    题目描述 数字加减游戏 小明在玩一个数字加减游戏 只使用加法或者减法 将一个数字s变成数字t 在每个回合中 小明可以用当前的数字加上或减去一个数字 现在有两种数字可以用来加减 分别为a b a b 其中b没有使用次数限制 请问小明最少可以用
  • 第四章 Flume专题-日志采集工具

    一 Flume专题之组件及架构介绍 1 Flume概述 1 1 Flume定义 Flume是一种分布式的 高可靠的和高可用的服务 用于有效地收集 聚合和移动大量日志数据框架 Flume是一个简单灵活的基于流数据的体系结构 1 2 Flume
  • Delphi ListView 的用法

    Delphi ListView 的用法 常用技巧 增加 i ListView1 Items Count with ListView1 do begin ListItem Items Add ListItem Caption IntToStr
  • Vite搭建react+ts项目

    创建一个react项目 首先需要打开终端 进行vite的引入 yarn create vite 使用react模板创建项目 yarn create vite react test template react cd react test y
  • Float与二进制之间的转化(Java实现)

    在线转化 http www binaryconvert com 2 3 import java text DecimalFormat 4 5 6 public class SinglePrecision 7 8 浮点到二进制 9 publi
  • 采用通信方式控制台达B2伺服驱动器运行在速度模式

    目录 前言 一 伺服驱动器恢复出厂设置 二 伺服驱动器设置为速度模式 三 关闭告警信息 四 通讯功能设置 五 采用通信功能控制伺服驱动器按速度模式运行 总结 前言 最近 使用台达B2伺服驱动器做项目 项目中用伺服电机的速度模式驱动一个螺杆按
  • Linux笔记--查看Linux系统自动Kill掉的进程

    目录 1 前言 2 查看系统日志 3 参考 1 前言 今天在服务器训练一个模型 程序无任何错误 但一段时间后挂在后台的进程莫名被Kill掉 原因在于服务器 linux 系统的运行内存不足 为了避免系统奔溃 系统主动 kill 内存占用最大的
  • Python项目创建(Pycharm程序)

    点击 新建项目 创建一个新的项目 这一步重点在Python解释器的选择 一个是新建虚拟环境 另一个是使用已有环境 使用此工具新建环境 Virtualenv 新建后在项目根目录下会出现 venv 的文件夹 相当于把Python解释器复制过去一
  • RANSAC算法实现 + 直线拟合

    一 RANSAC算法 1 参考资料 1 题目来源与解析 商汤科技SLAM算法岗的RANSAC编程题 2 牛客网题目 编程题 线性回归 3 牛客网解答参考 商汤科技某算法岗的编程题有点过分了啊 4 RANSAC算法原理 RANSAC翻译 经典
  • TOPIAM 社区版 1.0.0 发布,开源 IAM/IDaaS 企业身份管理平台

    文章目录 产品概述 系统架构 功能列表 管理端 门户端 技术架构 后续规划 相关地址 Hi 亲爱的朋友们 今天是传统 24 节气中的立秋 秋天是禾谷成熟 收获的季节 经过长时间优化和迭代 TOPIAM 企业身份管控平台也迎来了当下的成长和收
  • [Redis]-四种部署方式

    森格 2022年11月 本文是对Redis部署方式的学习 主要学习基本原理 以及几种方式的优缺点 一 部署方式概况 对于Redis的安装部署主要可以分为单机版 主从同步 Sentinel哨兵 Cluster集群部署四种方式 下面一起看下几种