Tag: redis

我应该使用什么? Socket.io客房还是Redis pub-sub?

很简单的问题。 我正在使用nodejs作为我的后端构build一个实时游戏,我想知道是否有任何信息可用,哪一个更可靠,哪个更有效? 我在我的代码中大量使用了Redis和Socket.io。 所以我想知道我应该使用Socket.io的房间还是使用redis的pub-sub更好? 更新:刚刚意识到有一个非常重要的原因,你可能想使用redis pub / sub over socket.io房间。 在发布给侦听器的情况下,使用Socket.io房间,(浏览器)客户端收到消息,使用redis实际上是收到消息的客户端(服务器端)。 因此,如果要通知所有(服务器)客户端特定于每个客户端的信息,并在传递给浏览器客户端之前做一些处理,则最好使用redis。 使用redis,你可以直接触发一个事件来生成每个用户的个人数据,就像socket.io一样,你必须一次生成所有的用户唯一的数据,然后循环遍历它们并发送他们的个人数据,房间的目的,至less对我来说。 不幸的是对于我的目的,我现在坚持使用redis。 更新2:结束开发插件只使用2个Redis连接,但仍然允许单个客户端处理,请参阅下面的答案….

CouchDB,MongoDB和Redis中的哪个数据库适合从Node.js开始?

我得到更多的Node.js,并享受它。 我正在更多地进入Web应用程序开发。 我已经把自己的头围绕着Node.js,并且目前使用Backbone作为前端。 我正在做一些使用Backbone的应用程序来使用RESTful API与服务器进行通信。 在Node.js中,我将使用Express框架。 我到了一个地方,我需要一个简单的数据库在服务器上。 我习惯于Django的 PostgreSQL和MySQL ,但我需要的是一些简单的数据存储等。我知道关于CouchDB , MongoDB和Redis ,但我只是不确定要使用哪一个? 其中的任何一个更适合Node.js? 对于初学者来说,从关系型数据库转向其中的哪一个更好? 我只需要一些指导就可以select,我已经走到了这一步,但是当它来到这些types的数据库,我只是不知道…

node.js将对象存储在redis中

这是事情 – 我想存储本地JS(node.js)对象(闪存套接字引用)在redis下的某个关键。 当我用简单的client.set()来做这件事的时候,它被存储为一个string。 当我尝试获取值时,我得到[object Object] – 只是一个string。 有机会得到这个工作? 这是我的代码: addSocket : function(sid, socket) { client.set(sid, socket); }, getSocket : function(sid) { client.get(sid, function(err, reply) { // cant't get an object here. All I get is useless string }); },

Node.js,Socket.io,Redis pub / sub大容量,低延迟困难

当连接socket.io/node.js和redis pub / sub以试图创build一个由可以处理多个传输的服务器事件驱动的实时Web广播系统时,似乎有三种方法: 'createClient'一个redis连接并订阅频道。 在socket.io客户机连接上,将客户机join到socket.io机房。 在redis.on(“message”,…)事件中,调用io.sockets.in(room).emit(“event”,data)分发给相关房间中的所有客户端。 像如何在socket.io中重用redis连接? 'createClient'是一个redis连接。 在socket.io客户端连接上,将客户端join到socket.io房间并订阅相关的redis通道。 在客户端连接closures和接收到消息调用client.emit(“event”,data)中包含redis.on(“message”,…)以引发特定客户端上的事件。 就像在使用socket.io中的RedisStore的例子中的答案一样 按照socketio-spec协议,使用RedisStore烘焙到socket.io中并从Redis中的单个“dispatch”通道“广播”。 Number 1允许为所有客户端处理Redis子和关联事件一次。 Number 2提供了一个更直接的挂钩到Redis pub / sub。 3号更简单,但对消息传递事件的控制很less。 然而,在我的testing中,所有连接的客户端都超过1个,performance出意外的低性能。 有问题的服务器事件是尽快发布到redis通道的1,000条消息,尽快分发。 性能是通过连接客户端的时间来衡量的(socket.io-client基于日志时间戳进入Redis列表进行分析)。 我猜测,在选项1中,服务器接收到消息,然后将其顺序写入所有连接的客户端。 在选项2中,服务器多次接收每条消息(每个客户端订阅一次)并将其写入相关的客户端。 在任何情况下,服务器都不会到达第二个消息事件,直到它传达给所有连接的客户端。 情况明显加剧,并发性上升。 这似乎与堆栈function的智慧不符。 我想相信,但我正在挣扎。 这种情况(大量消息的低延迟分布)只是没有这些工具的选项(还?),还是我错过了一个把戏?