Tag: redis

Redis由一名客户观看MULTI EXEC

我在RedisOnGo + node_redis上使用NodeJS + Express + Redis作为客户端。 我期望很多的并发性,所以试图testingWATCH。 这个例子不包含Express,只是必要的东西。 var redis = require("redis") var rc = redis.createClient(config.redis.port, config.redis.host) rc.auth(config.redis.hash, function(err) { if (err) { throw err } }) rc.on('ready', function () { rc.set("inc",0) for(var i=1;i<=10;i++){ rc.watch("inc") rc.get("inc",function(err,data){ var multi = rc.multi() data++ // I do know I can use rc.incr(), this is just for example […]

如何删除节点redis中的所有内容?

我希望能够删除所有的密钥。 有没有办法刷新所有节点的redis? Redis客户端: client = redis.createClient(REDIS_PORT, REDIS_HOST);

NodeJS redis连接会话标识在应该保持不变时被重新生成

我试图在NodeJS中使用Redis的标准会话持久性: var express = require('express'); var RedisStore = require('connect-redis')(express); var app = module.exports = express.createServer(); // Configuration app.configure(function(){ app.use(express.bodyParser()); app.use(express.cookieParser()); app.use(express.session({ secret: "keyboard cat", store: new RedisStore, key: 'sid' })); }); app.get('/', function (req, res) { if (req.session.isValid) { console.log("There is an existing session."); } else { req.session.isValid = true; console.log("New session."); console.log('Old session ID: […]

使用Redis Cloud和Heroku正确configuration节点会话存储

目前还不清楚使用Redis Cloud和Heroku的正确configuration参数是什么,并且在线找不到function实例。 这是我现在的代码: const express = require('express') const session = require('express-session') const RedisStore = require('connect-redis')(session); … const server = express() server.use(bodyParser.json()) server.use(bodyParser.urlencoded({ extended: false })) server.use(cookieParser()) server.use(session({ secret: token_secret, // create new redis store. store: new RedisStore({ url: 'redis://rediscloud:…@…redislabs.com:11111'}), resave: true, saveUninitialized: true })); 如果Redis Cloud和Heroku作为会话存储(使用快速会话),是否应该将resave和saveUnitialized设置为true或false? 此外,cookieParser会影响会话,需要在那里? 或者是单独parsing来自客户端的cookie,而与Redis的服务器端会话存储无关? 另外,如果cookieparsing器有一个秘密传递给函数? 最后,bodyParser应该在server.use(session)之前还是之后,并且应该将urlencoded extended设置为true或false?

我应该如何从AWS Lambda函数连接到Redis实例?

我正在尝试使用AWS Lambda和无服务器框架为单页Web应用程序构buildAPI。 我希望使用Redis Cloud进行存储,主要是为了兼顾速度和数据持久性。 我将来可能会使用更多的Redis Cloudfunction,所以我宁愿避免使用ElastiCache。 我的Redis Cloud实例与我的function在同一AWS区域中运行。 我有一个名为related的函数,它将GET请求中的hashtag接收到API端点,并检查数据库中是否有条目。 如果它在那里,它应该立即返回结果。 如果不是,则应查询RiteTag ,将结果写入Redis,然后将结果返回给用户。 我很新,所以我可能做一些天真的事情。 这是事件处理程序: 'use strict' const lib = require('../lib/related') module.exports.handler = function (event, context) { lib.respond(event, (err, res) => { if (err) { return context.fail(err) } else { return context.succeed(res) } }) } 这是../lib/related.js文件: var redis = require('redis') var jsonify = require('redis-jsonify') var rt […]

通过Socket.io使用Redis作为PubSub

我正在创build一个聊天应用程序,使用户可以进行私人聊天和群聊。 计划使用此应用程序的以下技术: – NodeJs + Socket.io + Redis + CouchDB(用于存储消息历史logging)+ AngularJS 根据我最初的研究,使用Redis作为PubSub服务是比使用Socket.io作为pub-sub更好的方法。原因在于,如果不同的用户连接到不同的服务器实例,那么在这种情况下使用套接字将会产生问题,用户1不会传递给用户2(用户1连接到服务器1,用户2连接到服务器2)。 但是,如果我们使用Redis,那么根据我的理解,我们必须创build新的渠道来实现私人聊天。 而且它们是Redis中10k频道的限制。 我的疑问是 我是否需要每次创build新频道以启用两个用户之间的私密聊天? 如果我需要创build单独的频道,那么实际上是否有10K频道的限制? 我需要一个使用Redis作为pub / sub与socket.io启用私人聊天的工作示例。 问候,Vikram

在redis中存储node.js setTimeout的返回值

我在Node.js中使用setTimeout ,它似乎行为不同于客户端setTimeout因为它返回一个对象,而不是一个数字。 我想存储在redis中,但由于redis只存储string,我需要将对象转换为string。 但是,使用JSON.stringify会引发循环引用错误。 如何将这个对象存储在redis中,如果我想能够从redis中获取并调用clearTimeout呢?

Heroku上的Redis将多个散列键保存为一个。 但在本地的Redis数据库确定

我们遇到了一个与heroku-redis有关的问题,其中新的散列键被保存在相同的值中 1) "0" 2) 1) "1448734352609" 2) "1448734366659" 3) "1448734356829" 1) "0" 2) 1448734352609, 1448734366659, 1448734356829而在本地主机上我们有以下内容: 1) "0" 2) 1) "1448734352609" 2) "1448734366659" 3) "1448734356829" 我们添加哈希的代码是一样的,没有改变。 我们正在使用redis NPM模块。 只是无法弄清楚为什么它不能在Heroku上工作。 帮助将不胜感激。 链接到我的项目 希望我已经彻底了解了这些信息,让我知道你是否需要更多信息。 🙂

Django,socket.io,node.js – pipe理私人消息和群组对话

我正在编写Facebook Messenger或WhatsApp等服务的后端。 我开始遵循这个精彩的教程 。 我用一个用Python(Django)编写的API来做到这一点。 除了这个API之外,我还有一个Redis进程和一个运行node.js的服务器(仅限本地主机)。 node.js服务器使用socket.io库通过websockets进行实时通信 包含消息的HTTP请求可以从任何客户端发送到Django API,而Django API则将消息发布到某个通道上的Redis。 node.js服务器订阅了Redis通道,并在发布这样的消息时得到通知。 节点跟踪哪些套接字当前与一些用户标识符键入的套接字ID数组连接。 我有几个关于这个问题: 1.私人信息 我想发送针对某个用户的消息。 我最初的做法是让HTTP请求(发送给Django)包含消息应该到达哪个用户。 当此消息到达node.js服务器(通过redis)时,节点可以在一个客户端数组中find该用户。 Django显然(?)需要知道哪个socket.io套接字属于哪个用户。 即Django需要知道节点应该使用哪个用户标识键来获取正确的套接字。 这是一个好方法吗? 由于我只使用一个发布渠道,Redis服务器会成为瓶颈吗? 当源用户发送消息时,如果消息的目标用户处于脱机状态,会发生什么情况? 我想抓住这个事件并发送推送通知。 2.房间 如果没有启动和维护组对话的function,此服务将不会有任何好处。 从我读过的,我应该为此创buildsocket.io:s 房间 。 那么我的问题是,如何保持会话之间的空间? 如果参与群组会话的每个用户都脱机,并从node.js服务器的客户机arrays中删除。 我能以某种方式在Django服务器的会话之间存储会议室吗? 任何帮助和/或反馈/想法是不胜感激。 谢谢

Node.js和Redis身份validation

我没有得到使用redis auth的redis node.js文档。 每个例子: var redis = require("redis"), client = redis.createClient(); // This command is magical. Client stashes the password and will issue on every connect. client.auth("somepass"); 在我的代码中,我有以下几点: var redis = require("redis"); r = redis.createClient(6379,'xxx.xxx.xxx.xxx'); r.auth("yyyyyyyy"); app.get('/', function(req, res){ r.set("foo", 'bar'); res.writeHead(200, {'Content-Type': 'image/gif'}); res.end('Hello'); }); 这是我得到的错误: Express server listening on port 8070 in development […]