Tag: redis

如何在node.js中pipe道到redis?

我有很多的数据插入(SET \ INCR)到redis DB,所以我正在寻找pipeline \ mass插入通过node.js。 我在node.js中找不到任何好的示例/ API,所以任何帮助都会很棒!

通过Node.JS连接到RedisToGo

我正在使用Redis与https://github.com/mranney/node_redis库结合使用。 Redis给了我一个url,看起来像redis://me:978287c0b670694673d045f08b2e0371@icefish.redistogo.com:9393但我不知道如何使用它作为createClient()只需要主机和端口。

如何将聊天与nodejs和xmpp集成到我现有的Web应用程序中?

我已经阅读了很多关于这个问题的问题,但是没有一个令人满意。 现有的应用程序 使用Expressjs作为API实现的简约社交networking。使用MySql作为数据库。 socket.io通知和ember.js作为前端框架。 我想要整合 我只想实现XMPP的一些特性,比如 Peer 2 Peer Messaging 在场和上次见面 群聊 读取收据 我从阅读类似的问题中得到一个基本的想法。 需要客户端库(Strophe.js,Converse.js) 需要一个XMPP服务器(ejabberd,Openfire,Prosody) 问题 我如何在这里整合聊天? 如何validationXMPP用户(FYI,我目前正在实施JWTvalidation)? build议使用redis(pub / sub)与socket.io或mqtt pub / sub来实现chat.Is是否可扩展? /性能怎么样? 我所问的内容可能太广泛了,但是对使用哪一套技术还是没有任何想法。

node.js集群中的subprocess间通信选项

所以我现在在做一个node.js游戏服务器应用程序,在这里我碰到了一些问题。 我的问题是,我使用socket.io接受来自游戏客户端的入站连接。 这些客户端可能连接到游戏世界的几个区域或区域之一。 基本架构如下所示。 主进程为运行区域pipe理器进程的每个游戏区域分配一个subprocess; 一个专门维护区域数据的过程(三维模型,玩家/实体的位置等)。 主进程然后为其创build的每个区域pipe理器分派多个“通信线程”。 这些线程创build一个socket.io的实例并侦听该区域的端口(多个线程在单个端口上侦听)。 这些线程将在自己的进程中处理大部分游戏逻辑,并与支持游戏服务器的数据库进行通信。 唯一的问题是,在某些情况下,他们可能需要与区域经理沟通,以获得关于区域,球员等的信息。 举个例子:一个玩家想要在该区域内购买/出售/交易非玩家angular色(NPC)。 区域通信线程需要询问区域pipe理器线程,以确定玩家是否足够接近NPC进行交易,然后才允许交易发生。 我在这里遇到的问题是我打算利用node.js集群function,并使用进程的send()和on()方法来回传递消息。 除了我遇到的一个警告之外,这将是很好的。 由于cluster.fork()所有subprocess都只能与“主”进程通信。 node.js根进程成为所有通信的瓶颈。 我使用一个脚本在我的系统上运行了一些基准testing,它使用集群的进程间通信(IPC)来回传递消息,并跟踪每秒钟执行多less次中继。 看起来,最终节点以每秒约20k的速度在它可以中继的IPC数量方面达到最大值。 这个数字在Phenom II 1.8ghz四核笔记本电脑和FX-8350 4.0ghz 8核心桌面电脑上都是一致的。 现在这听起来相当高,除了这基本上意味着无论有多less区域或通信线程,所有的IPC仍然是通过一个单一的进程瓶颈,作为整个应用程序的“中继”。 这意味着尽pipe看起来每个单独的线程可以每秒钟接续20k个IPC,但是由于所有的通信都是通过一个线程进行的,整个应用程序作为一个整体将永远不会中继,即使是在一些疯狂的32核心系统上。 所以这就是我遇到的问题。 现在困境。 我已经阅读了很多有关其他各种选项,并阅读了20个不同的问题在这里堆栈关于这个话题,我已经看到了一些事情经常popup: Redis :我实际上是在我的服务器上运行Redis,并将其用作socket.io数据存储,以便多个线程中的socket.io可以共享连接数据,以便用户可以连接到N个socket.io线程为他们的区域,所以服务器可以自动负载平衡input连接。 我关心的是它贯穿networking堆栈。 对于同一台服务器上的多个进程之间的通信几乎不是理想的 我觉得延迟将是一个长期的主要问题。 0MQ(zeromq / zmq) :我以前从来没有用过这个,但最近我已经听到了一些。 根据我所做的阅读,我发现了很多人使用TCP套接字的例子,但是对于使用IPC的人来说并没有太多的嗡嗡声。 我希望也许有人在这里为IPC工作过0MQ(甚至可能在node.js中),并且可以为我提供一些启示。 dnode :我再也没有用过这个,但是从我所看到的看来,这是另外一个devise用于TCP的选项,这意味着networking堆栈再次成为可能。 node-udpcomm :有人在这里的另一个问题(这是我不能再次不幸find)连接这个。 我从来没有听说过,它看起来像一个非常小的解决scheme,打开和侦听UDP连接。 虽然这可能仍然会比TCP选项更快,但我们仍然有networking堆栈的方式吗? 我肯定喜欢在我的“程序员区”以外的一英里,就像这里,以及我不太了解的networking/计算机体系结构的东西。 无论如何,底线是我完全卡在这里,不知道在这种情况下IPC是最好的select。 我现在假设0MQ是我上面列出的最好的select,因为它是唯一一个似乎为通信协议提供了“IPC”选项,我认为这意味着它使用UNIX套接字或者是不通过networking堆栈,但我不能确认,或任何东西。 我想我只是希望这里的一些人能够足够的了解我的方向,或者告诉我我已经去了那里。 我正在开发的这个项目是一个多人游戏服务器,devise用来与多人游戏客户端“开箱即用”,并以Three.js为3Dgraphics/计算器提供动力。 客户端和服务器将在所有人都满意的情况下成为开放源代码,并且我希望确保架构尽可能地具有可扩展性,这样人们就不会在此基础上构build游戏,然后进行扩展并最终撞墙。 无论如何感谢您的时间,如果你真的读这一切:)

如何删除“消息”侦听器上的Redis

一个典型的Redis聊天示例将会像这样(参见https://github.com/emrahayanoglu/Socket.io-Redis-RealTime-Chat-Example/blob/master/chatServer.js就是这样一个例子): io.sockets.on('connection', function (client) { //websocket connection redis1.subscribe("chat"); redis1.on("message", function(channel, message) { console.log(message); client.send(message); }); client.on('message', function(msg) { redis2.publish("chat",msg.message); }); client.on('disconnect', function() { redis1.quit(); }); }); 但是,这里的问题是,当client断开连接时, redis1.on('message',FUNC(){})侦听器仍然连接。 控制台将继续打印出message 。 如果要检查redis1的事件列表,他们仍然会发现匿名函数正在侦听。 问题是没有redis1.off(…)函数。 那么,如何解绑/取消订阅/删除/删除redis消息侦听器呢? 注意:不能只是做redis1.end(),因为这将打破其他websocket连接用户的redis连接。

在node.js中使用redis支持的“kue”库 – 为什么我的redis内存使用量不断增加?

在node.js应用程序中,我使用了由redis支持的kue队列库。 当一个工作完成,我把它从队列中删除。 在夜间运行大约70,000个工作后,redis内存使用量大约为30MB。 数据库中还有18个失败的作业,队列长度目前为零 – 作业处理速度比排队更快。 Redis没有被其他方式使用。 任何想法,即使我删除完成的工作,为什么redis内存使用量不断增加? 咖啡代码: gaemodel.update = (params) -> job = jobs.create "gaemodel-update", params job.attempts 2 job.save() job.on "complete", -> job.remove (err) -> throw err if err console.log 'completed job #%d', job.id

查询Redis?

我一直在学习Node.js,所以我决定做一个简单的广告networking,但我似乎无法决定使用一个数据库。 我已经搞乱了Redis,但我似乎无法find一种方法来查询数据库的具体条件,而是我只能得到一个密钥或列表的值或设置内的密钥。 我错过了什么,或者我应该使用一个更强大的数据库,如MongoDB?

Redis&Node.js:所有密钥

基本问题:使用Node.js我想获得我的redis数据库中的所有密钥。 当我调用键*时,我的redis数据库看起来像这样; AXF x9U 乐 所以每个logging我有一个唯一的关键,生成一个随机的string。 现在我想调用像foreach(键入Redis),并获得所有键在redis中。 是否有可能通过Node.js&Redis完成“SELECT * FROM Redis”类查询

如何devise即时通讯系统的redis pub / sub?

我是redis pub / sub的新手。 我在系统中有一个像IM一样的聊天工具。 所以我想用redis pub / sub。 正如我已经检查过的样本大多是基于聊天室devise的。 在我的系统中,我将有多个用户之间的聊天室, A:B A:C D:C E:F 所以,上面的线是房间。 我已经实现了像下面的node.js的服务器; var store = redis.createClient(); var pub = redis.createClient(); io.sockets.on('connection', function (socket) { var sub = redis.createClient(); sub.on("message", function(pattern, data){ data = JSON.parse(data); socket.send(JSON.stringify({ type: "chat", key: pattern, nick: data.nickname, message: data.text })) } }); socket.on('message', function (messageData) { […]

Redis命令获取Redis集群上的所有可用密钥?

我正在使用这个 redisManager.redisClient.keys('*example*', function (err, keys) { }) 但是它只能从一个redis集群提供密钥。 我如何从所有群集获取密钥?