Articles of redis

XMPP / Jabber与Redis Pub / Sub实时聊天服务器

我使用GitHub上的Node.js&Redis Pub / Sub,acani-node构build了一个简单的聊天服务器 。 它工作正常。 还有更多的事情要做,但我已经想出了(在我的脑海)如何去做。 但现在,我正在考虑使用XMPP服务器。 特征: 一对一(单播)消息 大量(多播)消息,即一个用户向1,000个用户发送相同的消息 自定义群组消息(如Beluga) 分层聊天室(PSub / Pub),例如,如果您发布到曲棍球聊天室,那么它也将进入体育聊天室 照片和video消息(TODO) 任何其他很酷的function… 此外,我知道我可以将Node.js服务器部署到Joyent Node ,并且我有一个Redis To Go的Redis服务器。 我想我会遵循YAGNI原则,并完成Redis Pub / Sub,尤其是 因为我们差不多完成了,如果我们看到需要的话就转换成XMPP。

REDIS:数字键(1,2,3 ..)与压缩键(A9z3,A9z4 ..)?

我们在Nodejs服务器上玩Redis – 很棒的组合。 问题出于好奇,应该被视为“理论上”。 将数值存储在数字键(1,2,3,4 …)上的压缩键(A9z3,A9z4,A9z5 …)之间有任何性能差异。 我正在考虑select速度只有在200万个键的数据库。 我希望这个问题不要太愚蠢,最好的问候;)

在redis键/值内使用多个值进行search

我被告知在我的Heroku应用程序中使用Redis进行authentication的用户,所以我决定跳槽。 我想要做的是在Redis商店中存储用户的哈希值,如下所示: { id:4532143215432, username:'davejlong', email:'dave@davejlong.com' } 然后我希望能够通过用户名或ID进行search。 不知何故,Redis可以这样做吗? 我正在使用支持任何redis命令的node.js redis模块https://github.com/mranney/node_redis

会话未定义 – 使用Connect-Redis / ExpressJS / Node

今天早上,我醒来发现Nodejitsu旋转出现以下错误: Warning: connection.session() MemoryStore is not designed for a production environment, as it will leak memory, and will not scale past a single process. '好吧!' 我想到了自己 – 然后我去find更合适的东西。 我决定使用Redis,并立即开始在我的应用程序中实现connect-redis和node-redis 。 但是,在重复尝试修复之后,以下错误仍然存​​在。 错误如下: TypeError: Cannot set property 'loggedIn' of undefined at /Users/Ryan/Aggregus/server.js:300:25 at Promise.<anonymous> (/Users/Ryan/Aggregus/object_models/user.js:60:5) at Promise.<anonymous> (/Users/Ryan/Aggregus/node_modules/mongoose/node_modules/mpromise/lib/promise.js:162:8) at Promise.EventEmitter.emit (events.js:95:17) at Promise.emit (/Users/Ryan/Aggregus/node_modules/mongoose/node_modules/mpromise/lib/promise.js:79:38) at Promise.fulfill […]

node.js + socket.io + redis体系结构 – 水平serverscaling套接字连接?

我第一次使用node.js并希望得到一个build议: 我在我的服务器上安装了以下程序: node.js v0.11.3-pre expressionv3.3.4 socket.io v0.9.14 connect-redis v1.4.5 Redis服务器v = 2.6.14 redis-cli 2.6.14 首先,我创build了一个快速应用程序: express testApplication 在创build的“package.json”中,我定义了所有必要的依赖关系。 从一开始,我就在一个名为“cluster.js”的文件中定义了一个用于垂直缩放(多进程)的集群: var cluster = require('cluster'); if( cluster.isMaster ) { var noOfWorkers = process.env.NODE_WORKERS || require('os').cpus().length; console.log("Workers found: " + noOfWorkers); for (var i = 0; i < noOfWorkers; i += 1) { cluster.fork(); } } else { […]

用redis水平缩放socket.io

我目前正在创build一个水平可伸缩的socket.io服务器,如下所示: LoadBalancer (nginx) Proxy1 Proxy2 Proxy3 Proxy{N} BackEnd1 BackEnd2 BackEnd3 BackEnd4 BackEnd{N} 我的问题是,使用socket-io redis模块,如果它们都连接到同一个redis服务器,是否可以向其中一个后端服务器连接到某个代理服务器的特定套接字发送消息? 如果是这样,我该怎么做?

在Node.js中,为什么我更喜欢键值存储在应用程序variables?

我正在Node.JS中开发一个支持Socket.IO的实时应用程序,在任何时候都会有几百个用户同时使用这个应用程序,我需要存储关于每个连接客户端的一些基本细节(并且删除这些细节客户端断开连接)。 我已经读过,使用键值存储(如Redis)是存储此类数据的首选。 为什么将数据存储在一个常规的应用内variables(对象,例如var connectedClientsData = {} )与将数据存储在Redis之类的键值存储中相比是不好的? 是否只支持扩展(例如,多个基于NodeJS的应用程序服务器可以连接到一个中央键值存储),还是存在一些更严重的缺陷?

为什么使用Redis代替正常variables存储?

使用Redis进行会话存储的优点是将所有数据简单地存储在应用程序中的variables中?

client.get()的值是“true”而不是实际值

我正在使用nowjs和node_redis。 我正在尝试创build一些非常简单的东西。 但到目前为止,这个教程已经让我空白,因为他们只做了console.log()。 //REDIS var redis = require("redis"), client = redis.createClient(); client.on("error", function (err) { console.log("Error "+ err); }); client.set("card", "apple"); everyone.now.signalShowRedisCard = function() { nowjs.getGroup(this.now.room).now.receiveShowRedisCard(client.get("card").toString()); } 在我的客户端: now.receiveShowRedisCard = function(card_id) { alert("redis card: "+card_id); } 警报只给出了“真实” – 我期待得到“苹果”的关键“卡”的价值。 有任何想法吗?

将socket.io从0.9.x迁移到1.x,configurationRedisStore出现问题

所以我正在将我的节点应用程序从socket.io 0.9.x迁移到1.x,并且在configurationRedisStore时遇到了问题。 我在使用0.9.x时已经有了这个工作,但我无法弄清楚如何使用1.x工作。 该文档似乎只适用于0.9.x. 以下是他们的文档中的相关部分,我遵循并使用旧版本: var RedisStore = require('socket.io/lib/stores/redis') , redis = require('socket.io/node_modules/redis') , pub = redis.createClient() , sub = redis.createClient() , client = redis.createClient(); io.set('store', new RedisStore({ redisPub : pub , redisSub : sub , redisClient : client })); 从我可以告诉问题似乎是这个部分: var RedisStore = require('socket.io/lib/stores/redis') , redis = require('socket.io/node_modules/redis') 这些文件在socket.io模块中似乎不再存在。 另外,我一直在使用他们的迁移指南作为参考,但没有提到如何configurationRedisStore的具体变化。 任何帮助或想法将不胜感激。 谢谢!