是否可以在 AWS ElastiCache 或 MemoryDB 中安装 RediSearch(Redis 模块)?手动创建倒排索引可能会非常痛苦,如果 AWS 中提供此功能就好了。我找到了使用 EC2 安装它的可能解决方法,但对于面向生产的使用,此解决方案不可行。如果有一个可使用 RediSearch 的托管解决方案会好得多。
我发现也可以将RediSearch作为来自 AWS、Azure 和 GCP 上的 Redis Labs 的Redis Enterprise Cloud上的服务,但我想知道是否可以直接在 AWS 中提供此模块,而无需支付额外的许可证。例如,RedisJson 应该已经在 AWS 中可用。
关于这个老问题, AWS 支持人员确认,到 2021 年,不可能在 AWS ElastiCache 中使用开箱即用的RediSearch 。2023年还是这样吗?
amazon-web-services redis amazon-elasticache redisearch amazon-memory-db
我们有一个使用 AWS MemoryDB for Redis 的应用程序。我们设置了一个包含一个分片和两个节点的集群。其中一个节点(名为 0001-001)是主读/写节点,而另一个节点是只读副本(名为 0001-002)。
部署应用程序后,当我们使用集群端点连接字符串进行连接时,连接到 MemoryDB 有时会失败。如果我们重新启动应用程序几次,它就会突然开始工作。成功与否似乎是随机的。我们得到的错误如下:
Endpoint Unspecified/ourapp-memorydb-cluster-0001-001.ourapp-memorydb-cluster.xxxxx.memorydb.eu-west-1.amazonaws.com:6379 serving hashslot 6024 is not reachable at this point of time. Please check connectTimeout value. If it is low, try increasing it to give the ConnectionMultiplexer a chance to recover from the network disconnect. IOCP: (Busy=0,Free=1000,Min=2,Max=1000), WORKER: (Busy=0,Free=32767,Min=2,Max=32767), Local-CPU: n/a
StackExchangeRedisCache 添加到启动文件中的服务集合中:
services.AddStackExchangeRedisCache(o =>
{
o.InstanceName = redisConfiguration.Instance;
o.ConfigurationOptions = ToRedisConfigurationOptions(redisConfiguration);
});
Run Code Online (Sandbox Code Playgroud)
...其中 ToRedisConfiguration 返回一个基本的 …
amazon-web-services redis stackexchange.redis redis-cluster amazon-memory-db
我在 AWS 中创建了一个具有 2 个节点的 Redis MemoryDB 集群:

我使用redis节点库 v4.0.0 连接到它,如下所示:
import { createCluster } from 'redis';
(async () => {
const REDIS_USERNAME = 'test-username';
const REDIS_PASSWORD = 'test-pass';
const cluster = createCluster({
rootNodes: [
{
url: `rediss://node1.amazonaws.com:6379`,
},
{
url: `rediss://node2.amazonaws.com:6379`,
},
],
defaults: {
url: `rediss://cluster.amazonaws.com:6379`,
username: REDIS_USERNAME,
password: REDIS_PASSWORD,
}
});
cluster.on('error', (err) => console.log('Redis Cluster Error', err));
await cluster.connect();
console.log('connected to cluster...');
await cluster.set('key', 'value');
const value = await cluster.get('key');
console.log('Value', value);
await cluster.disconnect(); …Run Code Online (Sandbox Code Playgroud)