当前位置 : 主页 > 网页制作 > Nodejs >

node.js – 如何将Redis用作多个aws实例或ELB的会话存储?

来源:互联网 收集:自由互联 发布时间:2021-06-16
我是初学者在我的nodejs应用程序中使用redis-server我使用redis服务器作为我的应用程序的会话存储: var RedisStore = require('connect-redis')(express);var admin_session = express.session({ key: 'admin_token', st
我是初学者在我的nodejs应用程序中使用redis-server我使用redis服务器作为我的应用程序的会话存储:

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服务器作为一个集群,如果在任何实例中有任何可用的更改,则清除所有实例的会话并清除所有代码级缓存.

如果有可能,任何人都可以帮助我如何做到这一点,以及步骤是什么?

提前致谢,
维杰

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

如果在每个Web实例上运行redis服务器,则需要在负载均衡器上启用粘性会话.这将在您开始自动扩展之前正常工作:只要从池中删除了一个Web实例,任何在该实例上具有会话的人都将丢失它.

因此,您希望为缓存和/或会话运行共享的redis(或memcached)服务器.使用elasticache,您可以选择运行单个节点“集群”并使用标准的连接方式,或运行真正的集群并使用AWS库连接到它.

对于会话,我可能只使用单个节点而不用担心弹性缓存客户端.

如果要在部署时清除缓存,则必须使用挂钩并编写代码才能执行此操作.或者您可以简单地启动一个新的Elasticache服务器,更新您的配置,并销毁旧配置.

网友评论