标签: amazon-elasticache

我应该如何通过node.js使用Elasticache Memcached

嗨,我是AWS的Memcached elasticache的新手。我发现此插件可以为我提供来自主机配置的一系列主机,但是我不确定100%最佳实践指示了什么。我的代码看起来与此类似...

var Ecad = require('ecad');
var endpoints = ['memcached.w7sebn.cfg.usw2.cache.amazonaws.com:11211'];
var client = new Ecad({endpoints: endpoints, timeout: 10000});
client.fetch(function(err,hosts){console.log(err);console.log(hosts);});
Run Code Online (Sandbox Code Playgroud)

console.log(hosts)打印出我可能会使用的主机数组。所以我应该实现自己的哈希算法来确定我连接并使用哪些内存缓存节点,例如->

var Ecad = require('ecad');
var endpoints = ['memcached.w7sebn.cfg.usw2.cache.amazonaws.com:11211'];
var client = new Ecad({endpoints: endpoints, timeout: 10000});
client.fetch(function(err,hosts){
    var connectTo = hosts[parseInt(Math.random() * hosts.length)];
    var Memcached = require('memcached');
    // We can throw in options as a second parameter
    // For info please refer to:
    //
    // https://www.npmjs.com/package/memcached
    var memcached = new Memcached(connectTo);
    memcached.set("TestKey", "Memcache Works!", 100, function (err) {
        memcached.get("TestKey", function …
Run Code Online (Sandbox Code Playgroud)

memcached amazon-web-services node.js amazon-elasticache

5
推荐指数
0
解决办法
736
查看次数

通过Node.js连接到ElastiCache集群

我对如何通过Node.js连接到AWS的ElastiCache Redis感到困惑.我已成功通过node_redis NPM连接到主要主机(001),但我无法使用ioredis的群集功能,因为显然ElastiCache没有实现CLUSTER命令.

我认为必须有另一种方式,但AWS SDK for Node仅具有管理ElastiCache的命令,而不是实际连接到它.

如果不使用CLUSTER,我担心如果主节点出现故障,我的应用程序将无法进行故障转移,因为我无法回退到其他群集.Error: READONLY You can't write against a read only slave.当主交换机时,我也从我的Redis客户端收到错误,我不知道如何优雅地处理.

我是否想过这个?我发现很少有关于使用Node.js使用ElastiCache Redis集群的信息.

amazon-web-services redis node.js amazon-elasticache redis-cluster

5
推荐指数
1
解决办法
3397
查看次数

来自EC2的AWS Elasticache超时

我从EC2尝试连接到AWS Elasticache获得连接超时.

我启动了一个单节点弹性缓存集群,我启动了一个EC2实例,确保可用区域与集群相同,us-west-2b

我没有创建新的VPC.我看到已经创建了一个.

我在弹性端点上运行了nslookup.它看起来与我的ec2不同.

我查看了文档和ec2启动,并没有看到我可以指定子网的位置,除了可用区域.

amazon-ec2 amazon-web-services amazon-elasticache

5
推荐指数
3
解决办法
8198
查看次数

AWS Elasticache - 如何从控制台刷新节点?

我有许多Elasticache节点正在运行,并希望清除它们.我知道可以通过编程方式执行此操作,但我想使用AWS控制台.

如何仅使用AWS控制台刷新Elasticache节点?

amazon-web-services amazon-elasticache

5
推荐指数
2
解决办法
9172
查看次数

使用Api Gateway连接到ElastiCache群集

我需要使用AWS API网关来传达elasticache(Redis引擎).我在同一个VPC中成功连接了lambda函数的ElastiCache.我无法从外部VPC连接.

所以我尝试创建一个API网关,并选择集成类型作为AWS Service Proxy和AWS Service作为ElastiCache.

这是创建API网关的屏幕截图

截图

但我不知道,如何测试这个创建的API来执行Redis命令.

eg: SET A FOO
Run Code Online (Sandbox Code Playgroud)

是否可以使用API​​网关传达ElastiCache

amazon-web-services amazon-elasticache aws-lambda aws-api-gateway

5
推荐指数
1
解决办法
2655
查看次数

将ElastiCache连接到Elastic Beanstalk实例

我一直在阅读有关在我的EB实例和我的Redis端点之间创建连接的Elastic Beanstalk和ElastiCache文档.我已将我的端点添加到我的Node.js应用程序中的会话配置中,但它似乎没有连接到我的Redis实例,如访问任何使用该会话的页面时出现的错误所示.我知道Elastic Beanstalk和ElastiCache之间的安全组需要相同,但我是否需要对我的环境进行调整以附加两者?

这是我的Node.js应用程序中的Redis连接:

//Session Cookie
app.use(cookieParser());
app.use(session({
    store: new RedisStore({
        host: 'redis-production.dfdfa.0001.use1.cache.amazonaws.com',
        port: 6379
    }), 
    secret: process.env.SECRET,
    resave: true,
    saveUninitialized: true,
    cookie: {
        httpOnly: true,
        secure: false //turn to true on production once https is in place
    }
}));
Run Code Online (Sandbox Code Playgroud)

amazon-web-services redis node.js amazon-elasticache amazon-elastic-beanstalk

5
推荐指数
1
解决办法
1730
查看次数

具有自动故障转移功能的AWS ElastiCache Redis Multi-AZ是否有助于最大限度地减少定期维护的停机时间?

我们计划在AWS ElastiCache中使用Redis(已禁用集群模式).

具有自动故障转移功能的多可用区有助于在主节点出现故障时保持最短的停机时间.

但是,没有关于定期维护的说法.我知道不同的可用区域位于区域的不同位置,但是在维护时会进行故障转移工作吗?所有节点是同时还是一个接一个地自动故障转移?数据会保持不变吗?

文档不包括这些问题.他们只是说我应该选择一个维护间隔,他们没有说我的数据会发生什么.

amazon-ec2 amazon-web-services redis amazon-elasticache

5
推荐指数
1
解决办法
919
查看次数

ElastiCache - 将数据从t1.*/t2.*迁移到m3.*

我目前有一个Redis集群,实例类型为cache.t2.micro

没有选项来自动备份Redis的数据到S3这个实例类型,也一个不能运行BGSAVE为命令其描述限制这里

我注意到,如果重新启动Redis群集中的主节点,或者Redis引擎版本从较低版本更改为较高版本(即从3.x到4.x),则会完全删除节点中的数据,尽管他们声称尽力而为.

此处还不支持为此实例类型创建快照

我能想到的唯一选择是使用DUMP命令并获取密钥的序列化版本并为所有DBS归档此数据,然后使用RESTORE命令将其还原回新集群.但这可能不是最好的方法,因为它不可扩展,最终需要一些时间来处理更大的数据集.

同样对于启用了TTL的密钥,我必须运行TTL命令,获取TTL(这是额外的开销).

但DUMP命令发出错误DUMP有效负载版本或校验和错误,该规则将该选项排除(难怪此命令不受限制)

除了读取所有键及其值之外,还有其他方法可以执行备份和还原吗?

谢谢.


编辑:

所以我知道这不是最好的方法,但这是我能想到的.

TL; DR

读取所有密钥并从一个群集迁移到另一个群集.

对于具有config的集群,这应该不是问题.大于t2.*

码:

import traceback
from redis import Redis
import itertools

def migrate_to_another_redis_node(source_node, source_node_port_no, dest_node, dest_node_port_no):
'''
migrates the keys from one redis node to the other
:param source_node: source redis node url
:param source_node_port_no: source redis node port number
:param dest_node: destination redis node url
:param dest_node_port_no: destination redis node port …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services redis amazon-elasticache

5
推荐指数
1
解决办法
146
查看次数

是否可以删除AWS ElastiCache Redis集群上的所有密钥?

我正在尝试删除AWS ElastiCache集群中的所有键/值,但是当我正在执行flushallflushdb从redis-cli中执行操作时,它只会删除当前连接到的节点中的值。

我正在寻找一个可以删除集群中所有节点的所有密钥的命令。我可以运行cluster nodes,获取主节点列表,分别连接到每个主节点,然后运行flushdb,但这要调用有效的TRUNCATE命令似乎有很多开销。有更简单的方法吗?

amazon-web-services redis amazon-elasticache redis-cli

5
推荐指数
1
解决办法
494
查看次数

是什么决定AWS Redis的可用内存?(OOM问题)

我正在将AWS Redis用于一个项目并遇到内存不足(OOM)问题。在调查此问题时,我发现了几个会影响可用内存量的参数,但数学似乎不适用于我的情况。我是否缺少任何变量?

我正在使用:

  • 3个分片,每个分片3个节点
  • cache.t2.micro实例类型
  • default.redis4.0.cluster.on 缓存参数组

ElastiCache网站说cache.t2.micro有0.555 GiB = 0.555 * 2^30 B = 595,926,712 B记忆。

default.redis4.0.cluster.on参数组具有maxmemory = 581,959,680(仅在实例内存下)和reserved-memory-percent = 25%581,959,680 B * 0.75 = 436,469,760 B available

现在,当我内存不足时查看CloudWatch中的BytesUsedForCache指标,我看到大约457M,437M,397M,393M字节的节点。节点不可能超过上面计算的436M字节!

我想念的是什么?还有其他确定可用内存量的事情吗?

amazon-web-services redis amazon-elasticache

5
推荐指数
1
解决办法
86
查看次数