Amazon MemoryDB for Redis的探索和实践

news2024/12/22 19:07:07

一、背景

由于当下项目的日益增长的数据量,单机Redis已经远远不能满足我们的要求。考虑转成集群,但是直接在服务器中搭建Redis集群的话,EC2挂掉则Redis也会随之挂掉,耦合性太强。所以将Redis相关的服务全部抽取在单独的服务器上或者直接使用厂商提供的Redis服务。目前服务器使用的是Amazon,Redis随之就可以选择Amazon MemoryDB 的产品。业务对数据也有持久化要求,最终选择Amazon MemoryDB for Redis作为我们的替代方案。

二、基本介绍

MemoryDB 与 Redis(一种热门的开源数据存储)兼容 ,使您能够使用他们目前已使用的同样灵活友好的 Redis 数据结构、API 和命令来快速构建应用程序。借助 MemoryDB,您的所有数据都存储在内存中,从而使您能够实现微秒级读取和个位数毫秒级写入延迟和高吞吐量。MemoryDB 还使用多可用区事务日志跨多个可用区 (AZ) 持久存储数据,以实现快速失效转移、数据库恢复和节点重新启动。

MemoryDB 兼具内存中性能和多可用区持久性,可用作微服务应用程序的高性能主数据库,无需单独管理缓存和耐用数据库。

参考文档:

  • https://docs.aws.amazon.com/zh_cn/memorydb/
  • https://aws.amazon.com/cn/blogs/china/comparison-of-amazon-memorydb-and-amazon-elasticache/

三、集群创建

  • 进入产品控制台,点击菜单栏中的集群。进入集群页面,点击创建集群

图片8

  • 填写基本信息

图片9

  • 进入高级设置

安全组代表当前集群访问的开放情况

加密选择TLS,安全新更高

ACL中是一组用户列表,配置后访问只能通过该列表中的username&password访问。

图片4

• 确认信息,完成创建。等状态变为绿色即为创建成功。

图片5

官方文档:https://docs.aws.amazon.com/zh_cn/memorydb/latest/devguide/getting-started.html

四、连接集群

内部访问

根据官方文档介绍,MemoryDB for Redis的设计是专门为通过Amazon EC2实例进行访问。可以从相同的VPC中的Amazon EC2实例访问MemoryDB节点。要访问数据,可以使用具有TLS/SSL的redis-cli

# 安装redis   
sudo yum install redis6 -y   
# 连接redis集群[如果开了ssl传输,则需要加上--tls]   
redis6-cli -h xxx.c7uerl.clustercfg.memorydb.xxx.amazonaws.com -p 6379 -c 【--tls】  

连接成功后就可以访问了。如果集群有ACL列表,则需要 AUTH username password 授权后才可以进行访问

外部连接

如果没有开启SSL加密,则可以使用NLP转发的形式进行连接。文档参考:https://www.jianshu.com/p/902bfdf74b47

如果开启了SSL加密,则可以使用stunnel搭建SSL隧道,将其转化为EC2本地的进程,从而进行连接。文档参考:https://www.jianshu.com/p/5d4a8699539b

在连接时需要同时使用SSH+redis的连接信息。

image-20240415211626501

项目配置

相关的yml文件如下:

# RedisTemplate相关配置
spring:
redis:
  cluster:
    nodes:
      - xxx-0001-001.test.c7uerl.memorydb.us-west-1.amazonaws.com:6379
      - xxx-0001-002.test.c7uerl.memorydb.us-west-1.amazonaws.com:6379
    max-redirects: 3
  ssl: true
  username: leo
  password: LXYA.0123456789123456
# Redisson配置
redis:
# redisson的配置。每个服务可以自己的配置文件中覆盖此选项。
redisson:
  # 如果该值为false,系统将不会创建RedissionClient的bean。
  enabled: true
  # mode的可用值为,single/cluster/sentinel/master-slave
  #mode: single
  mode: cluster
  # 如果启用了SSL,则需要rediss://开头
  address: rediss://xxx-0001-001.test.c7uerl.memorydb.us-west-1.amazonaws.com:6379,rediss://xxx-0001-002.test.c7uerl.memorydb.us-west-1.amazonaws.com:6379
  # single: 单机模式
  #   address: redis://localhost:6379
  # cluster: 集群模式
  #   每个节点逗号分隔,同时每个节点前必须以redis://开头。
  #   address: redis://localhost:6379,redis://localhost:6378,...
  # sentinel:
  #   每个节点逗号分隔,同时每个节点前必须以redis://开头。
  #   address: redis://localhost:6379,redis://localhost:6378,...
  # master-slave:
  #   每个节点逗号分隔,第一个为主节点,其余为从节点。同时每个节点前必须以redis://开头。
  #   address: redis://localhost:6379,redis://localhost:6378,...
  # address: redis://192.168.174.128:6381
  # 链接超时,单位毫秒。
  timeout: 6000
  # 单位毫秒。分布式锁的超时检测时长。
  # 如果一次锁内操作超该毫秒数,或在释放锁之前异常退出,Redis会在该时长之后主动删除该锁使用的key。
  lockWatchdogTimeout: 60000
  username: leo
  # redis 密码,空可以不填。
  password: LXYA.0123456789123456
  pool:
    # 连接池数量。
    poolSize: 20
    # 连接池中最小空闲数量。
    minIdle: 5

另外集群环境下,配置类也需要对应的修改

image-20240415211854920

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

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

相关文章

论文笔记:Time Travel in LLMs: Tracing Data Contamination in Large Language Models

iclr 2024 spotlight reviewer评分 688 1 intro 论文认为许多下游任务(例如,总结、自然语言推理、文本分类)上观察到的LLMs印象深刻的表现可能因数据污染而被夸大 所谓数据污染,即这些下游任务的测试数据出现在LLMs的预训练数据…

ins视频批量下载,instagram批量爬取视频信息

简介 Instagram 是目前最热门的社交媒体平台之一,拥有大量优质的视频内容。但是要逐一下载这些视频往往非常耗时。在这篇文章中,我们将介绍如何使用 Python 编写一个脚本,来实现 Instagram 视频的批量下载和信息爬取。 我们使用selenium获取目标用户的 HTML 源代码,并将其保存…

MySQL模糊查询

一、MySQL通配符模糊查询(%,_) 1.1.通配符的分类 1.“%”百分号通配符:表示任何字符出现任意次数(可以是0次) 2.“_”下划线通配符:表示只能匹配单个字符,不能多也不能少,就是一个字符。当然…

计算机组成原理【CO】Ch3 存储系统

文章目录 考纲3.1 存储系统概述3.2 主存储器3.3 主存储器与CPU的连接3.4 外部存储器3.5 高速缓冲存储器3.6 虚拟存储器【※】存储系统总体流程图【※】各个部件的存储位置计算机存储相关硬件与数据结构说明进程控制块(PCB)页表页表始址页表始址寄存器(PTR)MMU(内存管理单元…

Springboot Gateway 报错Failed to resolve “bogon”的原因及解决办法

一、问题出现原因及初步分析 今天遇到一个奇怪的错误,一个一直正确运行的微服务后台,突然无法访问,如何重启都会报错。 想到近期有人在服务器上安装过其它服务,因此,考虑可能是配置问题,可配置问题修复后…

实时数据同步之Maxwell和Canal

文章目录 一、概述1、实时同步工具概述1.1 Maxwell 概述1.2 Canal概述 2、数据同步工作原理2.1 MySQL 主从复制过程2.2 两种工具工作原理 3、MySQL 的 binlog详解3.1 什么是 binlog3.2 binlog 的开启3.3 binlog 的分类设置 4、Maxwell和Canal对比5、环境安装 二、Maxwell 使用1…

信也科技网络自动化实践-网络策略管理

1、背景 随着各种法律法规和行业标准的出台和更新,企业或组织需要遵守各种安全合规性要求。网络安全策略管理需要符合这些要求,从而保障企业或组织的安全和合规性。网络安全策略管理需要涵盖企业或组织的整个网络生命周期,包括网络规划、设计…

halcon 3.2标定相机

参考《solution_guide_iii_c_3d_vision.pdf》 3.2.2.2 Which Distortion Model to Use 选用何种畸变模型 对于面阵相机,halcon中两种畸变模型:The division model and the polynomial model(差分模型和多项式模型),前…

MLOps

参考: 什么是MLOps?与DevOps有何异同?有什么价值?https://baijiahao.baidu.com/s?id1765071998288593530&wfrspider&forpcMLOps简介_AI开发平台ModelArts_WorkflowMLOps(Machine Learning Operation)是机器学习&#xf…

kafka(六)——存储策略

存储机制 kafka通过topic作为主题缓存数据,一个topic主题可以包括多个partition,每个partition是一个有序的队列,同一个topic的不同partiton可以分配在不同的broker(kafka服务器)。 关系图 partition分布图 名称为t…

Unity 扩展自定义编辑器窗口

在Assets文件夹路径下任意位置创建Editor文件夹,将扩展编辑器的代码放在Editor文件夹下 生成编辑器窗口 代码中首先引用命名空间 using UnityEditor; 然后将创建的类继承自EditorWindow public class MenuEditor : EditorWindow 然后通过扩展编辑器菜单功能调用…

AndroidStudio 导出aar包,并使用

打包 1、确认当前选项是否勾选,如未勾选请先勾选。 2、勾选完成后重启Android Studio。 3、重启完成后,选中要打包的module 4、打包完成 使用 1.在项目中新建libs,放入aar文件。 2.修改配置 添加如下代码 flatDir {dirs("libs")}3.修改app…

【BEVHeight论文阅读】自动驾驶车路协同车端感知算法

论文名称:BEVHeight: A Robust Framework for Vision-based Roadside 3D Object Detection 论文地址:https://arxiv.org/pdf/2303.08498.pdf 代码地址:https://github.com/ADLab-AutoDrive/BEVHeight 总结:这篇文章比较有意思的点…

单元测试四大过程

单元测试四大过程(蓝桥课学习笔记) 单元测试过程 单元测试是软件测试过程中的一个关键环节,它与集成测试、系统测试一样,分为测试策划、测试设计、测试执行和测试总结几个阶段。 单元测试过程中每个阶段需要完成的主要工作如下&…

ActiveMQ主从架构和集群架构的介绍及搭建

一、主从和集群架构的特点 1.1 主从架构的-Master/slave模式特点 读写分离,纵向扩展,所有的写操作一般在master上完成,slave只提供一个热备 1.2 集群架构-Cluster模式特点 分布式的一种存储,水平的扩展,消息的分布…

基于WOA优化的CNN-LSTM-Attention的时间序列回归预测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1卷积神经网络(CNN)在时间序列中的应用 4.2 长短时记忆网络(LSTM)处理序列依赖关系 4.3 注意力机制(Attention) 4…

聚类能代替分类吗?

聚类和分类是两种不同的机器学习方法,它们在处理数据时有着不同的目的和应用场景。 分类:分类是一种监督学习方法,它需要已标记的训练数据集。在分类中,算法会学习如何将输入数据映射到预定义的类别中。例如,给定一组包…

ActiveMQ 07 集群配置

Active MQ 07 集群配置 官方文档 http://activemq.apache.org/clustering 主备集群 http://activemq.apache.org/masterslave.html Master Slave TypeRequirementsProsConsShared File System Master SlaveA shared file system such as a SANRun as many slaves as requ…

开源相机管理库Aravis例程学习(一)——单帧采集single-acquisition

开源相机管理库Aravis例程学习(一)——单帧采集single-acquisition 简介源码函数说明arv_camera_newarv_camera_acquisitionarv_camera_get_model_namearv_buffer_get_image_widtharv_buffer_get_image_height 简介 本文针对官方例程中的第一个例程&…

vue快速入门(二十五)本地存储与初始化使用

注释很详细&#xff0c;直接上代码 上一篇 新增内容 本地获取数据数据存储到本地 源码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial…