Articles of redis

会话值无法加载的请求,但加载下一个请求

作为一个节点的新手,我现在越来越困惑了好几天了,我想我再也忍受不住压力了。 所以我觉得我唯一的出路就是在睁开眼睛的时候在这里张贴我的挑战,试图以任何方式,我可以没有任何积极的结果。 我正在使用快递节点,以及express-session和redis来构build我的应用程序。 同时,我正在使用Mysql数据库来存储我的数据,并使用redis来存储会话。 一切似乎正常工作,但问题已经与我的会话variables。 当我在会话中存储一个值,并试图检索它,它不会加载,同时,在控制台中输出的值是完美的。 但是,当我尝试请求其他内容时,则显示以前的会话值。 所以就像之前的会话被加载在当前的请求。 我正在使用把手作为我的模板。 我只是不知道我在做什么错,但都是一样的,这很奇怪。 正如我所指出的,先前的会话值在下一次请求时加载,或者说当前的请求加载先前的会话值。 有什么build议吗?

如何照顾与Socket.io通信的networking故障

我正在devise一个使用Socket.io,Nodejs,Expressjs,Redis,Angularjs的系统,在这个系统中消息传递非常重要。 用例: 我的系统需要侦听可以在多个用户之间共享的资源通知。 套接字连接到服务器与资源的信息,以便我可以维护每个资源的套接字列表。 当有资源的通知时,我会在每个套接字上为该资源发送通知。 ResourceID1 = ["scoketID1", "socketID2"] // Two sockets listening to ResourceID1 我更新套接字断开此列表还通过删除该特定的套接字ID出或资源ID列表。 通过这种方式,我确保将通知发送给共享资源的每个用户以及该用户的每个会话以及每个可以是一个会话的多个选项卡的套接字。 总之“每个sockets”。 我也维护资源通知的散列,以便每次有资源的新通知特定的资源通知散列将被更新。 ResourceID1-notificationHash : { key1:"124", key2: "abc" } 这样做的原因是,如果套接字断开像用户closures选项卡或更重要的是因为某些原因用户互联网断开连接。 并且服务器不会再次收到心跳套接字连接,并将该资源的最后一条消息发送到该套接字。 为了确保特定的套接字(客户端)总是收到消息是我的执行足够? 我知道我可以实现一个事件的callback,但是我所做的是当一个特殊的选项卡(套接字)被断开,再次连接我发送该资源的最后一条消息。 是否有其他networking故障,可能导致可靠的消息传递的问题? 我的实现是不同的,因为对于消息传递,我不考虑用户,我正在考虑sockets,可以是一个用户可以多个sockets,就像一个用户可以在同一时间有多个会话可以说在Firefox和铬,然后为每个他可以打开多个选项卡。 select套接字的原因是我的资源可以在多个用户之间共享,所以对于一个资源更新,我可能不得不将消息发送给多个用户,每个用户有多个会话,每个会话有多个套接字。

如何dockerize我的nodejs快递应用程序托pipe在亚马逊linux ami?

1.my上面的应用程序技术栈是expressjs,nodejs,mongoDB,redisDB,s3(存储)。 2.API托pipe在Linux AMI上3.我需要为我的应用程序创builddocker容器镜像。

获取locking关键字redis-lock nodejs的例外情况

当试图locking哈希键如下获得一个例外: 我指的是以下文档: https://redis.io/topics/distlock https://github.com/mike-marcacci/node-redlock var redis = require('redis'); var Redlock = require('redlock'); var redisClient = redis.createClient(settings.redisport, settings.redishost); var redlock = new Redlock( // you should have one client for each independent redis node // or cluster [redisClient], { // the expected clock drift; for more details // see http://redis.io/topics/distlock driftFactor: 0.01, // time in ms […]

将“存在”扩展到多个服务器

如何扩展到多个服务器的存在? 我的意思是接近用户在线/连接状态的实时数据。 我最初的想法 服务器 挑战:如何知道其中一台服务器是否崩溃? 它可能没有机会“注销”。 如果websocket服务器联机,用TTL将服务器主机写入Redis websocket服务器每隔X秒更新TTL(心跳)以防止删除 如果服务器脱机或崩溃,TTL将从Redis中删除该服务器 现在我知道可靠和接近实时(取决于TTL和心跳间隔我使用)通过做一个简单的查询哪些服务器在线。 我试图想到更简单甚至更“实时”的事情,但我不知道其他防弹方法是否知道其中一台服务器是否崩溃。 用户 挑战:如何知道用户的在线状态是否有效:服务器没有崩溃等? 如果用户连接,则将用户在线状态和服务器主机写入Redis 如果用户断开连接,请将Redis中的用户状态更新为脱机并删除主机 如果我想知道用户是否在线: 从Redis查询用户对象 如果用户状态在线 ,则从用户对象获取服务器主机 从Redis查询服务器主机 如果服务器主机存在,服务器在线 – 用户在线状态有效 我没有使用TTL的用户,因为这将是很多Redis的开销和用户对象包含元数据我不想删除,例如lastTimeOnline 。 我现在已经使其可扩展,但我需要做出几个请求,以了解用户状态,我也需要担心Redis缩放。 有没有一种方法可以在没有我刚制作的所有开销的情况下进行扩展?

在Node.js Bot服务中实现Redis

博特信息 应用ID:776ba3b4-38e5-4582-809d-7c8d773cfe9b SDK平台:Node.js SDK版本: 活跃渠道:直线 部署环境:Auzure Bot服务 问题描述 我需要帮助实施Redis来保存Bot状态。 我正在一个项目中工作,这个项目的确需要我们尽可能减less延迟。 知道我们正在使用DocumentDB,但是由于Redis和内存一起工作,这可能会更快。 我已经按照教程使用mongo DB, Microsoft Bot框架MongoDB作为中间层来存储会话状态,数据和上下文,并且正在编辑文件/lib/IStorageClient.js来连接,保存和从redis中检索。 代码示例 这是我的/lib/IStorageClient.js实现,而不是使用MongoDB连接我已经把Redis的连接 "use strict"; var Consts = require('./Consts'); var redis = require('redis'); var IStorageClient = (function () { function IStorageClient(options) { this.options = options; } IStorageClient.prototype.initialize = function (callback) { var _this = this; var host = "MyRedis.redis.cache.windows.net"; var auth […]

在实时Web应用程序中处理服务器响应的上下文

发现难以描述这个问题 – 所以请编辑,如果你知道更多的相关条款。 我正在构build一个基本上使用Redis(PubSub)+ Node.js + Socket.IO作为分发服务器的Web应用程序。 我有双向沟通,没有任何问题 – 但我需要能够从客户端(asynchronous)向服务器发出请求,并处理响应,同时处理其他可能会出现的无关响应。 这是我迄今为止,但我不是特别满意这种方法: 服务器 // Lots of other code redis.psubscribe('*'); redis.on("pmessage", function(pattern, channel, message) { // broadcast }); io.on('connection', function(client) { client.on('message', function(message) { switch(message.method) { // call relevant function } }); }); function object_exists(object_id) { // do stuff to check object exists client.send({method: 'object_exists', value: object_exists}); […]

使用redis和节点给出错误

而运行此https://github.com/fictorial/redis-node-client/blob/master/test/test.js#L1093-1097给我错误: /redis-node-client/test$ node test.js …………………………………. node.js:178 throw e; // process.nextTick error, or 'error' event on first tick ^ undefined 为什么这个错误来了?

Redis商店没有get方法?

http://senchalabs.github.com/connect/middleware-session.html提及….“每个会话商店必须实施以下方法:” 获得(SID,callback) .set(sid,session,callback) .destroy(sid,callback) 我正在使用下面的代码来尝试获取SID: 节点JavaScript,使用Socket.io连接 io.sockets.on('connection', function(socket) { var sid = socket.id; if (sid) { sessionStore.get(sid, function (error, session) { console.log("Connect Sid: " + sid); }); } }); 而且我收到以下错误: TypeError: Object function RedisStore(options) { options = options || {}; Store.call(this, options); this.client = new redis.createClient(options.port || options.socket, options.host, options); if (options.pass) { this.client.auth(options.pass, function(err){ […]

Express上的节点 – 什么数据存储?

我正在做节点/快递的第一个项目。 我正在寻找实施一个数据存储,并注意到快递正在使用redis作为会话存储。 这是否意味着默认快速安装redis? 我问的原因是我在考虑是否要安装mongodb,但是如果redis已经在使用,我会继续使用它。 新的节点和expression如此任何build议非常赞赏。