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

目前亚马逊云科技提供了 100 余种产品的免费套餐。其中,计算资源 Amazon EC2 首年 12 个月免费,750 小时/月;存储资源 Amazon S3 首年 12 个月免费,5GB 标准存储容量;数据库资源 Amazon RDS 首年12个月免费,750 小时;Amazon Dynamo DB 25GB 存储容量永久免费等等。
它有三种不同类型的免费优惠可供选择:
没有任何套路,纯纯是白嫖,AWS 免费套餐,白嫖入口

本文将以 Amazon MemoryDB 为例,介绍如何从零开始并构建你专属的 Redis 内存数据库。
搭建传统的自建 Redis,需要考虑性能、数据持久性、扩展性、防火墙等一系列搭建环境,步骤很繁琐,费时费力。通过云数据库搭建 Redis,从效率、性能、数据安全、扩展性等方面来说,解决了传统方式的痛点,节省大量时间与运维成本。如:
通过连续五年被 Stack Overflow 评为“最受欢迎”的数据库 Redis 来快速构建应用程序。使用灵活的 Redis 数据结构和 API(例如,流式传输、列表和集合)。
以微秒级的读取和个位数毫秒级的写入延迟和高吞吐量来访问数据。MemoryDB 每天可以处理超过 13 万亿个请求,并支持每秒超过 1.6 亿个请求的峰值。
MemoryDB 将数据存储在内存中,并使用多可用区事务日志实现快速数据库恢复和重启,而不会丢失数据。由于 MemoryDB 可以持久地存储数据,因此可以将其用作主数据库。
MemoryDB 可将每个集群的存储空间从几 GB 无缝扩展到 100 TB 以上,以满足您的应用程序需求。
没有 AWS 帐号的小伙伴需要先进行帐号注册:注册及上手试用地址 (在账单登记页可以使用国内的信用卡)

输入邮箱地址与密码即可

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

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

Amazon MemoryDB for Redis 是一项与 Redis 兼容、极具持久性的内存数据库服务,可实现超快性能。为具有微服务架构的现代化应用程序提供亚毫秒级延迟、高吞吐量和多可用区持久性。
官方文档:https://docs.aws.amazon.com/zh_cn/memorydb/latest/devguide/getting-started.html
在左侧导航窗格中选择集群,然后点击创建集群

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

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

集群设置
使用 t4g.small 实例,2个月内免费(每月免费提供实例和 20GB 数据)
6.2default.memorydb-redis6 参数组
安全性
安全组 - 充当防火墙来控制对集群的网络访问,很重要!!!
静态加密 – 对磁盘上存储的数据启用加密
设置后,最后点击创建即可

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

创建 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 即所有设备都可以访问

要从 MemoryDB 节点中访问数据,可以使用利用安全套接字层 (SSL) 的客户端,也可以在 Amazon Linux 2 上使用具有 TLS/SSL 的 redis-cli。
若要使用 redis-cli 连接到 Amazon Linux 2 上的 MemoryDB 集群,步骤如下:
登录 EC2 命令行控制台
选择 EC2 Instance Connect 连接类型

下载并编译 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 集群信息下 集群端点

实操结果如下:

为了提供托管服务体验,MemoryDB 限制了对某些需要高级特权的命令的访问。以下命令不可用:
acl deluseracl loadacl saveacl setuserbgrewriteaofbgsavecluster addslotcluster delslotcluster setslotconfigdebugmigratemodulepsyncreplicaofsaveshutdownslaveofsyncMemoryDB 与 Redis 兼容,是一个很受欢迎的开源数据存储,使您能够使用他们目前已经使用的同样灵活友好的 Redis 数据结构、API 和命令快速构建应用程序。使用 MemoryDB,您的所有数据都存储在内存中,这使您能够实现微秒读取和单位数毫秒的写入延迟和高吞吐量。MemoryDB 还使用多可用区事务日志跨多个可用区 (AZ) 持久存储数据,以实现快速故障切换、数据库恢复和节点重启。
Memory DB 既具有内存中的性能和多可用区持久性,可用作微服务应用程序的高性能主数据库,从而无需分别管理缓存和持久数据库。
亚马逊云科技还专为开发者们打造了多种学习平台:
我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div
我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看rubyzip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于
作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代
我正在尝试使用ruby和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h