暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【译】以简单的方式开始在 AWS 上使用 Redis

原创 热血青年 2022-06-27
2101

原文链接:https://dzone.com/articles/getting-started-with-redis-on-aws-the-easy-way
作者:Abhishek Gupta

与大多数服务一样,Amazon MemoryDB for Redis 与 Amazon VPC 完全集成,并始终在 VPC 中启动集群,这意味着您无法从 VPC 外部访问它。在最初探索这些服务(MSK、Elasticache for Redis 等)时,我通常遵循涉及设置 EC2、SSH 进入实例、安装/复制内容(语言、运行时、代码、客户端等)的文档。 ,然后尝试了一些东西。

大多数情况下,第一步是最难的,对于开发人员来说,尽可能减少摩擦以“开始”是很重要的。我尝试寻找更简单的方法,发现 AWS Cloud9 非常有用,它快速、可预测,并且有一堆现成的有用工具。

在本博客中,我将提供有关如何使用Cloud9 轻松快速地开始(并继续试验/构建/开发)Amazon MemoryDB 的分步说明。

您无需在本地计算机上安装任何东西即可完成本教程。

您唯一需要的是一个 AWS 帐户。

设置 Cloud9 和 MemoryDB

如果您是 AWS 的新手(或 MemoryDB/任何其他服务),我建议您使用 AWS 控制台手动完成设置(而不是使用 CloudFormation 或其他工具)。这为您提供了可用选项的概述,并且在您尝试使用 AWS CLI、CDK、CloudFormation 等实现自动化时会很有帮助。

Cloud9 环境

这很简单:文档按预期工作。

转到 AWS 控制台 > Cloud9:

5.png
只需输入您的环境名称:

6.png
您可以在第二个屏幕上安全地选择默认值:

  • 您将拥有一个带有 Amazon Linux 2 的 t2.micro 节点类型(1 GiB RAM + 1 vCPU),它将在 30 分钟后自动休眠(如果未使用)。
  • 该实例将放置在默认 VPC(任何 AZ 中的任何子网)中。还将创建一个安全组。
    现在这已经足够了。

在最后一页,检查您的设置,单击创建环境。
7.png

Redis 的内存数据库

同样,文档按预期工作。有一些配置旋钮,但我建议你保持简单:

  • 单节点集群:选择 db.t4g.small 节点类型(目前就足够了)。
  • 放置默认 vpc:您将在创建子网组(在 MemoryDB 中)时选择它(连同子网)。
  • 确保同时设置 ACL 和凭据(用于连接到 MemoryDB 的用户名和密码)。

请耐心等待,集群应该会在几分钟内准备就绪。

8.png

安全配置

您需要添加配置以允许从 Cloud9 实例访问您的 MemoryDB 集群。

首先,复制 Cloud9 实例的安全组 ID:

9.png

然后,打开 MemoryDB 集群的安全组:
10.png
添加入站安全规则:
11.png
该规则表示允许与源安全组(本例中为 Cloud9)关联的实例访问与目标安全组(本例中为 MemoryDB)关联的实例的 TCP 端口 6379。

你都准备好了!

导航到您的 Cloud9 IDE

转到 AWS 控制台 > Cloud9:
12.png

您的 Cloud9环境应该打开 - 您应该看到一个终端。

以简单的方式连接到 MemoryDB

最简单的方法是使用 redis-cli。您不需要单独安装它。让我们使用 Docker,因为它已经为我们预装了!

redis-cliredis 容器本身中可用,因此您可以从那里启动并使用它。从 DockerHub docker pull redis 拉取 Redis Docker 镜像。

Admin:~/environment $ docker pull redis

Using default tag: latest
latest: Pulling from library/redis
214ca5fb9032: Pull complete 
9eeabf2ad250: Pull complete 
b8eb79a9f3c4: Pull complete 
0ba9bf1b547e: Pull complete 
2d2e2b28e876: Pull complete 
3e45fcdfb831: Pull complete 
Digest: sha256:180582894be9a7d5f1201877744b912945a8f9a793a65cd66dc1af5ec3fff0fc
Status: Downloaded newer image for redis:latest
docker.io/library/redis:latest
复制

运行容器:

Admin:~/environment $ docker run --rm -it redis /bin/bash
root@429f8fabaf09:/data# 
复制

现在您在终端(Cloud9 IDE)的终端(在容器中)内。

复制 MemoryDB 集群的集群端点并将其设置为环境变量:

13.png

确保从集群端点中删除端口(:6379),因为 redis-cli 会自动附加:

export MEMORYDB_CLUSTER_ENDPOINT=<memorydb cluster endpoint without the :6379 part)

redis-cli -c --user <memorydb username> --askpass -h $MEMORYDB_CLUSTER_ENDPOINT --tls --insecure
复制

--askpass 将提示您输入密码。输入它。

14.png
哇!您现在已从 Cloud9 实例中的 Docker 容器内连接到 MemoryDB 集群。

在终端:

SET hello world
SET foo bar
复制

您应该从 MemoryDB 获得 OK 响应。

到目前为止,一切都很好!您可以使用标准工具 (redis-cli) 连接新创建的 MemoryDB 集群。这对于完整性/连接性测试很有用,但您也可以进行一些“轻量级”开发并运行一些程序来在 MemoryDB 上执行操作。这是下一个合乎逻辑的步骤,所以让我们这样做。

下面的示例显示了一个 Go 程序,但您可以使用您选择的语言。毕竟,大多数语言运行时(如 Java、Python、Node.js、Go 等)都预装在 Cloud9 环境中!
15.png

运行程序以连接 MemoryDB

代码在 GitHub 上,所以只需克隆它并将其更改为正确的文件夹:

git clone https://github.com/abhirockzz/memorydb-cloud9-quickstart
cd memorydb-cloud9-quickstart
复制

设置环境变量并运行程序!

export MEMORYDB_CLUSTER_ENDPOINT=<memorydb cluster endpoint (with the port)>
export MEMORYDB_USERNAME=<memorydb username>
export MEMORYDB_PASSWORD=<memorydb password>

go run main.go
复制

这是我运行它时的输出:

Admin:~/environment/memorydb-cloud9-quickstart (master) $ go run main.go 

go: downloading github.com/go-redis/redis/v8 v8.11.5
go: downloading github.com/gorilla/mux v1.8.0
go: downloading github.com/cespare/xxhash/v2 v2.1.2
go: downloading github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f
2022/05/12 04:53:46 connecting to cluster ****************(redacted)
2022/05/12 04:53:46 successfully connected to cluster
2022/05/12 04:53:46 started HTTP server....
复制

这将启动一个公开几个端点的 HTTP 服务器。让我们试试看。

在 Cloud9 中打开一个单独的终端以运行以下命令。

首先,看一下集群信息:

curl -i http://localhost:8080/

HTTP/1.1 200 OK
Date: Thu, 12 May 2022 04:57:03 GMT
Content-Length: 354
Content-Type: text/plain; charset=utf-8

[{"Start":0,"End":16383,"Nodes":[{"ID":"3a0ef99406d4165fab450fde6c0a4eac3ee8f215","Addr":"****************.amazonaws.com:6379"},{"ID":"2b5a4663a9183f7921517c6f14195e9d26a6ca79","Addr":"****************.amazonaws.com:6379"}]}]
复制

我们得到了关于集群中的分片以及各个节点的信息。在您的情况下,结果会有所不同。

还记得我们之前用 redis-cli 执行过 SET hello world 吗?现在让我们获取该值:

# get the value for the key "hello"

Admin:~/environment $ curl -i localhost:8080/hello
HTTP/1.1 200 OK
Date: Thu, 12 May 2022 04:54:45 GMT
Content-Length: 32
Content-Type: text/plain; charset=utf-8

{"Key":"hello","Value":"world"}
复制

对键 foo执行相同操作:

Admin:~/environment $ curl -i localhost:8080/foo
HTTP/1.1 200 OK
Date: Thu, 12 May 2022 04:55:44 GMT
Content-Length: 28
Content-Type: text/plain; charset=utf-8

{"Key":"foo","Value":"bar"}
复制

它按预期工作。不存在的密钥怎么办?

Admin:~/environment $ curl -i localhost:8080/notthere
HTTP/1.1 404 Not Found
Date: Thu, 12 May 2022 04:56:23 GMT
Content-Length: 0
复制

HTTP 404:足够公平。最后,您可以设置自己的键值:

Admin:~/environment $ curl -i -X POST -d 'redis' localhost:8080/awsome
HTTP/1.1 200 OK
Date: Thu, 12 May 2022 04:59:25 GMT
Content-Length: 0

Admin:~/environment $ curl -i localhost:8080/awsome
HTTP/1.1 200 OK
Date: Thu, 12 May 2022 05:00:51 GMT
Content-Length: 33
Content-Type: text/plain; charset=utf-8

{"Key":"awsome","Value":"redis"}
复制

清理

完成后,不要忘记:

  • 删除 MemoryDB 集群,
  • Cloud9 环境

这就是这个博客的全部内容。我希望您能够遵循 MemoryDB 集群和 Cloud9 环境的设置(以及现成的 IDE 和终端!)。在 Docker 中使用 redis-cli 进行了一些初始连接测试之后,您还运行了一个测试程序来进行更多实验。

这一切只需要您的浏览器!

我希望这很有用,您可以将其重新用于您的特定设置、要求和编程语言。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论