Tag: redis

我应该如何将JSON存储在redis中?

我有JSON(<1k)通过node.js存储在Redis中。 将它存储为对象或string有什么优缺点? 我错过了其他的select吗? 所有的处理将最终发生在客户端,所以转换成对象是没有必要的。 组 var images = JSON.parse(data); // data is already JSON, is this needed? callback(images); // sends result to the user r.set('images:' + req.query, images); // saving the object 得到 callback(images);

Socket.io和Heroku上的多个Dyno Node.js应用程序。 WebSocket在连接build立之前closures

我正在构build一个部署到使用Websockets的Heroku的App。 当我只使用1个dynamic码时,websockets连接正常工作,但当我缩放到大于1时,出现以下错误 POST http://****.herokuapp.com/socket.io/?EIO = 2&transport = polling&t = 1412600135378-1&sid = zQzJJ8oPo5p3yiwIAAAC 400(Bad Request)socket.io-1.0.4.js:2 WebSocket连接到'ws://****.herokuapp.com/socket.io/?EIO = 2&transport = websocket&sid = zQzJJ8oPo5p3yiwIAAAC'失败:WebSocket在连接build立之前closures。 socket.io-1.0.4.js:2 我正在使用Redis适配器来启用多个Web进程 var io = socket.listen(server); var redisAdapter = require('socket.io-redis'); var redis = require('redis'); var pub = redis.createClient(18049, '[URI]', {auth_pass:"[PASS]"}); var sub = redis.createClient(18049, '[URI]', {detect_buffers: true, auth_pass:"[PASS]"} ); io.adapter( redisAdapter({pubClient: pub, subClient: sub}) […]

redis性能,将json对象存储为一个string

我需要保存一个用户模型,如下所示: { "nickname": "alan", "email": …, "password":…, …} // and a couple of other fields 今天我使用Set:users 在这个集合中,我有一个像alan这样的用户 在这个成员我有上面的散列 这工作正常,但我只是想知道是否可以使用以下方法的上述方法: 仍然使用用户设置(轻松获取用户(成员)列表) 在这个集合中只使用一个键/值存储,如: key:alan value:上述用户散列的stringify版本 检索logging会更容易(我将不得不parsing与JSON)。 我对redis很陌生,我不确定最好的是什么。 你怎么看 ?

SocketIO缩放架构和大型机房要求

我们在一个大型聊天应用程序上使用socketIO。 在某些情况下,我们希望向所有其他用户发送“状态”(用户可用性)。 io.in('room1').emit('availability:update', {userid='xxx', isAvailable: false}); room1可能包含很多用户(最多500个)。 当许多可用性更新被触发时,我们观察到NodeJS负载的显着提升。 这个想法是使用与Socket IO类似的Redis存储。 让Web浏览器客户端连接到不同的NodeJS服务器。 当我们想要发射到一个房间时,我们使用Redis PubSub ZeroMQ甚至RabbitMQ将“发射到房间1”的有效载荷分配给所有其他的NodeJS进程。 每个进程都会自己调用他自己的io.in('room1').emit 。 对这种设置的关注之一是进程间的通信可能变得相当繁忙,我想知道它是否会在未来成为一个问题。 这是我想到的架构。

Node.js最快,非基于内存的多进程键值存储

什么是支持多进程的Node.js最快的非内存键值存储? 我需要存储简单的键值string/string对(不是文档或JSON,只是string)。 这里有一些例子(其中会有数百万): 12345678 – abcdefghijklmnopabcdefghijklmnop 86358098 – ahijklmnopbcdefgahijklmnopbcdefg abcdefghijklmnopabcdefghijklmnop – 12345678 ahijklmnopbcdefgahijklmnopbcdefg – 86358098 我努力了: Redis :它真的很快,可以满足我所需要的一切,但是却消耗了太多的内存。 LevelDB :在RAM上它速度快而且不重,但只有单进程。 LevelDB的解决方法是多级的 ,通过HTTP公开单个LevelDB进程。 但是这当然是有代价的。 我需要快点。 有没有关键价值的商店: 支持Node.js或具有绑定; 存储string/string对; 支持多个进程; 不完全驻留在内存中; 快吗? 我只在乎阅读。 快速的多进程阅读是必要的,但不能写。 我对LevelDB的当前速度感到满意,而不是单一进程的事实。 额外细节: 我正在谈论大约五千万个键/值对,键和值在8到500个字符之间。 代码将运行在一个普通的Linux服务器上。 内存使用量应该限制在几千兆字节(4GB是好的,8GB是可以接受的) 阅读的方式不仅仅是写作, 其实,我可以不写文章。 速度比任何事情都重要(考虑到内存和多进程约束)。

如何在Heroku上与Node.js交streamWeb和Worker dynos?

Web Dynos可以处理HTTP请求 当Web Dynos处理它们时, 工作者Dynos可以从中处理作业。 但是我不知道如何让Web Dynos和Worker Dynos互相沟通。 例如,我想通过Web Dynos接收HTTP请求 ,把它发送给工人Dynos ,处理作业并将结果发送给Web Dynos ,在网上展示结果。 这是可能的Node.js? (用RabbitMQ或Kue等)? 我在Heroku文档中找不到一个例子 还是应该在Web Dynos中实现所有代码,并只能扩展Web Dynos ?

通过node.js应用程序将嵌套散列保存在redis中

我正在使用node_redis,我想保存一个结构,如: { users : "alex" : { "email" : "alex@gmail.com", "password" : "alex123"}, "sandra" : { "email" : "sandra@gmail.com", "password" : "sandra123"}, … } 目前,为每个用户创build一个JSON对象: jsonObj = { "email" : "alex@gmail.com", "password" : "alex123"} 并做一个 db.hmset("alex", JSON.stringify(jsonObj)) 是否有可能embedded此结构在另一个结构(用户之一?)我怎么能设置用户[“alex”]这种结构?

如何从Redis保存和检索会话

我正在尝试将Redis会话集成到Node.js中编写的身份validation系统中。 我已经能够成功地设置Redis服务器, connect-redis和Express服务器。 这是我的设置(只是重要的一点): var express = require("express"); var RedisStore = require("connect-redis")(express); var redis = require("redis").createClient(); app.use(express.cookieParser()); app.use(express.session({ secret: "thisismysecretkey", store: new RedisStore({ host: 'localhost', port: 6379, client: redis }) })); 现在…我如何实际创build,阅读和销毁会话? 我已经阅读了大量关于如何在这里设置connect-redis和许多问题的文章,但我发誓每一个只停留在configuration上,并没有解释如何实际使用它… 我知道,这可能是非常简单的,但请不要downvote,只是解释:)。

在socket.io中使用RedisStore的例子

我正在尝试跨多个进程和/或服务器扩展一个简单的socket.io应用程序。 Socket.io支持RedisStore,但是我很困惑如何使用它。 我正在看这个例子, http://www.ranu.com.ar/post/50418940422/redisstore-and-rooms-with-socket-io 但我不明白在代码中使用RedisStore与使用MemoryStore有什么不同。 有人可以向我解释吗? 另外configurationsocket.io使用redisstore与创build自己的redis客户端和设置/获取自己的数据有什么区别? 我是新来的node.js,socket.io和redis所以请指出,如果我错过了一些明显的东西。

我如何使用简单的Express应用程序使用Node.js群集?

– 我构build了一个简单的应用程序,它从一个Redis数据库中提取数据(50个项目),并在本地主机上抛出。 我做了一个ApacheBench(c = 100,n = 50000),我在双核T2080 @ 1.73GHz(我的6哟笔记本电脑)上获得了150次请求/秒,但是使用过程非常令人失望,图所示: 只有一个核心使用,这是按照devise在节点,但我想我几乎可以加倍我的请求/秒〜300,甚至更多,如果我可以使用Node.js群集。 我摆弄了很多,但我一直无法弄清楚如何把这里给出的代码与我的应用程序一起使用,如下所示: var express = require( 'express' ), app = express.createServer(), redis = require( 'redis' ).createClient(); app.configure( function() { app.set( 'view options', { layout: false } ); app.set( 'view engine', 'jade' ); app.set( 'views', __dirname + '/views' ); app.use( express.bodyParser() ); } ); function log( what […]