gpt4 book ai didi

node.js - 如何使用 Redis 作为多个 aws 实例或 ELB 的 session 存储?

转载 作者:IT王子 更新时间:2023-10-29 05:59:42 25 4
gpt4 key购买 nike

我是在我的 nodejs 应用程序中使用 redis-server 的初学者我正在使用 redis 服务器作为我的应用程序的 session 存储:

var RedisStore = require('connect-redis')(express);

var admin_session = express.session({
key: 'admin_token',
store: new RedisStore({
host: 'localhost',
port: 6379,
db: 2
// pass: 'RedisPASS'
}),
secret: 'aersda@#$32sfas2342'
});

这对单个实例来说工作正常。但我的查询是针对来自 aws elb 的多实例服务。

实际上,我希望将 Redis 服务器作为一个集群,如果任何实例内部有任何更改可用,它会清除所有实例的 session ,并清除所有代码级缓存。

如果可能的话,谁能帮我怎么做,步骤是什么?

提前致谢,维杰

最佳答案

当负载均衡器后面有多个 Web 服务器时,这是一种相当标准的 session 方法。

如果您在每个 Web 实例上运行一个 Redis 服务器,那么您需要在您的负载均衡器上启用粘性 session 。这将正常工作,直到您开始自动缩放:一旦您的一个 Web 实例从池中删除,任何在该实例上拥有 session 的人都会丢失它。

所以你想为你的缓存和/或 session 运行一个共享的 redis(或 memcached)服务器。使用 elasticache,您可以选择运行单个 Node “集群”并使用标准连接方式,或者运行真正的集群并使用 AWS 库连接到它。

对于 session ,我可能只使用单个 Node ,而不用使用 elasticache 客户端。

如果您想在部署时清除缓存,您必须有一个 Hook 并编写代码来执行此操作。或者您可以简单地启动一个新的 Elasticache 服务器,更新您的配置,然后销毁旧服务器。

关于node.js - 如何使用 Redis 作为多个 aws 实例或 ELB 的 session 存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28061069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com