redis - 使用 AWS Elasticache Redis 管理 Sails.js 中的 session

标签 redis sails.js amazon-elasticache

我目前在 Sails.js 项目中使用 connect-redis 来利用本地安装的 redis 实例。将来,我希望对多个服务器实例(在负载均衡器后面)使用通用的 Redis 实例,因此我一直在关注 AWS Elasticache。不过,我在配置方面遇到了问题。

sails-project\config\session.js:

adapter: 'connect-redis',
host: 'primary-endpoint.xxxxxx.ng.0001.apse1.cache.amazonaws.com',
port: 6379,
ttl: <redis session TTL in seconds>,
db: 0,
pass: <redis auth password>,
prefix: 'sess:',

TTL 值应该是多少? pass 属性是否应该以某种方式指向 IAM?

我尝试在 IAM 中创建一个具有 AmazonElastiCacheFullAccess 权限的用户,并将其访问 key ID 放入 pass 属性中,但我在服务器控制台中收到此错误(在我的 Windows 机器上进行测试):

C:\repos\sails-project\node_modules\connect-redis\lib\connect-redis.js:83
      throw err;
      ^
AbortError: Redis connection lost and command aborted. It might have been processed.
    at RedisClient.flush_and_error (C:\repos\sails-project\node_modules\redis\index.js:362:23)
...

关于改变什么有什么想法吗?

最佳答案

我假设您的“Windows 盒子”位于 AWS 之外。

对于 Elasticache,您无法从 AWS 外部访问它。请参阅此处的安全部分:https://aws.amazon.com/elasticache/faqs/#Can_I_access_Amazon_ElastiCache_from_outside_AWS

最常见的用例是让 VPC 内的 EC2 实例访问并使用 Elasticache 服务。除此之外,Elasticache Redis 服务不采用身份验证,仅允许通过安全组进行锁定。

如果您需要与此配置不同的东西,那么您应该考虑将 Redis 放在 EC2 上,以便您拥有完全的控制权。

关于redis - 使用 AWS Elasticache Redis 管理 Sails.js 中的 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46788393/

相关文章:

amazon-web-services - EC2 实例无法访问 elasticache

ruby - 重新请求错误: DirtyExit - Child process received unhandled signal

Laravel 5.2 多项目在 redis 上使用队列,如果作业失败则记录遍历数据库

php - redis - 将多个值添加到列表并获取多个值

java - spring-data-redis 1.7.2 注入(inject) redisTemplate 失败

node.js - Angular 2、Laravel 5.2 和 ioredis 实时应用程序

sails.js - 如何在 Sails js 中为模型属性设置索引?

mysql - Sails.JS + MySQL : Unknown column 'NaN' in 'where clause'

orm - SailsJS、Waterline 使用 select 填充记录

redis - redis scan 是否会扫描开始扫描操作后插入的数据?