快速使用Amazon MemoryDB并构建你专属的Redis内存数据库

前言

说到云厂商,大家可能第一反应是阿里云、华为云、腾讯云等,国内阿里云是市场份额占用最多的,但全球范围的云计算市场份额,亚马逊才是老大哥:

img

目前亚马逊云科技提供了 100 余种产品的免费套餐。其中,计算资源 Amazon EC2 首年 12 个月免费,750 小时/月;存储资源 Amazon S3 首年 12 个月免费,5GB 标准存储容量;数据库资源 Amazon RDS 首年12个月免费,750 小时;Amazon Dynamo DB 25GB 存储容量永久免费等等。

它有三种不同类型的免费优惠可供选择:

没有任何套路,纯纯是白嫖,AWS 免费套餐,白嫖入口

image-20220604114758482

本文将以 Amazon MemoryDB 为例,介绍如何从零开始并构建你专属的 Redis 内存数据库。

MemoryDB 优势

搭建传统的自建 Redis,需要考虑性能、数据持久性、扩展性、防火墙等一系列搭建环境,步骤很繁琐,费时费力。通过云数据库搭建 Redis,从效率、性能、数据安全、扩展性等方面来说,解决了传统方式的痛点,节省大量时间与运维成本。如:

通过 Redis 快速构建

通过连续五年被 Stack Overflow 评为“最受欢迎”的数据库 Redis 来快速构建应用程序。使用灵活的 Redis 数据结构和 API(例如,流式传输、列表和集合)。

实现超快性能

以微秒级的读取和个位数毫秒级的写入延迟和高吞吐量来访问数据。MemoryDB 每天可以处理超过 13 万亿个请求,并支持每秒超过 1.6 亿个请求的峰值。

以持久性和高可用性存储数据

MemoryDB 将数据存储在内存中,并使用多可用区事务日志实现快速数据库恢复和重启,而不会丢失数据。由于 MemoryDB 可以持久地存储数据,因此可以将其用作主数据库。

​

轻松扩展

MemoryDB 可将每个集群的存储空间从几 GB 无缝扩展到 100 TB 以上,以满足您的应用程序需求。

注册账号

没有 AWS 帐号的小伙伴需要先进行帐号注册:注册及上手试用地址 (在账单登记页可以使用国内的信用卡)

image-20220604153731187

登录控制台

控制台登录入口

输入邮箱地址与密码即可

image-20220604154228343

进来以后 Service 内容超级多,为了方便,我们可以像下图一样在这里搜 MemoryDB,选择搜索结果的第一个选项

image-20220604154445529

可以看到整体的界面,点击开始使用即可:

image-20220604160924065

MemoryDB 上手教程

Amazon MemoryDB for Redis 是一项与 Redis 兼容、极具持久性的内存数据库服务,可实现超快性能。为具有微服务架构的现代化应用程序提供亚毫秒级延迟、高吞吐量和多可用区持久性。

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

创建集群

在左侧导航窗格中选择集群,然后点击创建集群

image-20220604161832964

  • 集群信息

    输入集群的名称、描述信息

    image-20220604163456916

  • 子网组

    创建一个新的子网组,或从可用列表中选择要应用于此集群的现有子网组。子网类似于局域网

    image-20220605181514795

  • 集群设置

    使用 t4g.small 实例,2个月内免费(每月免费提供实例和 20GB 数据)

    • 适用于Redis 版本兼容性中,接受默认值 6.2
    • 适用于端口,接受默认 Redis 端口 6379
    • 适用于参数组中,接受 default.memorydb-redis6 参数组

    image-20220605181156173

  • 安全性

    安全组 - 充当防火墙来控制对集群的网络访问,很重要!!!

    静态加密 – 对磁盘上存储的数据启用加密

    设置后,最后点击创建即可

    image-20220605182441915

当您的集群状态为 available 时,便可向其授予 EC2 访问权限,连接到集群并开始使用它。

image-20220605184105508

授予访问权限

  • 创建 EC2 实例

    此部分假设你已经熟悉 Amazon EC2 实例的启动和连接。有关更多信息,请参阅 Amazon EC2 入门指南。

    密钥对(登录) 信息,千万不要选择【在没有密钥对的情况下继续】的选项,否则会导致 EC2 实例创建后无法直接连接访问

  • 授权访问权限

    通过安全组配置授权访问。

    所有 MemoryDB 集群旨在通过 Amazon EC2 实例进行访问。最常见的情况是从同一 Amazon Virtual Private Cloud (Amazon VPC) 中的 Amazon EC2 实例访问 MemoryDB 集群。必须先授权 EC2 实例访问集群,然后您才能从 EC2 实例连接到集群。

    这里为了演示,直接配置完整入站访问,0.0.0.0/0 即所有设备都可以访问

    image-20220605203834451

连接集群

要从 MemoryDB 节点中访问数据,可以使用利用安全套接字层 (SSL) 的客户端,也可以在 Amazon Linux 2 上使用具有 TLS/SSL 的 redis-cli。

若要使用 redis-cli 连接到 Amazon Linux 2 上的 MemoryDB 集群,步骤如下:

  • 登录 EC2 命令行控制台

    选择 EC2 Instance Connect 连接类型

    image-20220605204242117

  • 下载并编译 redis-cli 实用工具

    在 EC2 实例的命令提示符处,键入以下命令

    #Amazon Linux 2
    $ sudo yum -y install openssl-devel gcc
    $ wget http://download.redis.io/redis-stable.tar.gz
    $ tar xvzf redis-stable.tar.gz
    $ cd redis-stable
    $ make distclean
    $ make redis-cli BUILD_TLS=yes
    $ sudo install -m 755 src/redis-cli /usr/local/bin/
    
  • 在 EC2 实例的命令提示符处,键入以下命令,并使用你的集群和端口的终端节点替换此示例中显示的相应内容

# 示例
# src/redis-cli -c -h Cluster Endpoint --tls -p 6379
$ src/redis-cli -c -h clustercfg.redis-free.uyejvs.memorydb.ap-southeast-1.amazonaws.com --tls -p 6379

其中 Cluster Endpoint 位于 MemoryDB 集群信息下 集群端点

image-20220605211153340

实操结果如下:
image-20220605211612948

​

受限 Redis 命令

为了提供托管服务体验,MemoryDB 限制了对某些需要高级特权的命令的访问。以下命令不可用:

  • acl deluser
  • acl load
  • acl save
  • acl setuser
  • bgrewriteaof
  • bgsave
  • cluster addslot
  • cluster delslot
  • cluster setslot
  • config
  • debug
  • migrate
  • module
  • psync
  • replicaof
  • save
  • shutdown
  • slaveof
  • sync

总结

MemoryDB 与 Redis 兼容,是一个很受欢迎的开源数据存储,使您能够使用他们目前已经使用的同样灵活友好的 Redis 数据结构、API 和命令快速构建应用程序。使用 MemoryDB,您的所有数据都存储在内存中,这使您能够实现微秒读取和单位数毫秒的写入延迟和高吞吐量。MemoryDB 还使用多可用区事务日志跨多个可用区 (AZ) 持久存储数据,以实现快速故障切换、数据库恢复和节点重启。

Memory DB 既具有内存中的性能和多可用区持久性,可用作微服务应用程序的高性能主数据库,从而无需分别管理缓存和持久数据库。

亚马逊云科技还专为开发者们打造了多种学习平台:

  • 入门资源中心:从0到1 轻松上手云服务,内容涵盖:成本管理,上手训练,开发资源:点我访问

  • 架构中心:亚马逊云科技架构中心提供了云平台参考架构图表、经过审查的架构解决方案、Well-Architected 最佳实践、模式、图标等:点我访问

  • 构建者库:了解亚马逊云科技如何构建和运营软件:点我访问

  • 用于在亚马逊云科技平台上开发和管理应用程序的工具包:点我访问