Tag: redis

nodeJs中的Redis-pubsub,执行“HGET”命令

我想从nodeJs服务器获取redis服务器中的哈希数据 我有ruby的脚本 $redis.hset("token:test", 'user_id', 12) 我怎么可以得到'令牌:testing'的价值在我已经尝试的NodeJs服务器 var pubsub = redis.createClient(); pubsub.hget("token:test",'user_id'); 但它说不undifined 🙁 谁能帮我??

构build一个Web应用程序来支持使用Socket.io进行团队协作

我正在构build一个允许团队协作的Web应用程序。 也就是说,团队中的用户将能够编辑共享数据,并将其编辑推送给其他连接的团队成员。 Socket.io房间是实现这个目标的合理方法吗? 即(粗略地说): 所有连接的团队成员将join同一个房间(在第一个团队成员连接时dynamic创build)。 服务器收到的任何编辑都会被广播到房间(除了被持续等)外。 在客户端,接收到的任何编辑都将用于更新浏览器中显示的共享数据。 显然它需要以某种方式处理同一个数据的同时更新。 这似乎是一个合理的方法吗? 可能需要考虑一些更强大的function,例如在编辑会话期间,让Redis数据库保存共享数据(并定期将数据“刷新”到持久数据库)?

使用节点序列化redis数据

我正在使用redis和节点(与node_redis ),我想从redis序列化数据到一个XML文件(使用simple-xml-writer ),但我偶然发现节点的asynchronous行为。 我有一个数据集的a,b,c,d和e在redis中存储为一个散列,关键是数据:a,data:b data:c …,每个键访问一个散列。 现在我的XML文件应该是这样的: <root> <data record="a"> (data for a) </data> <data record="b"> (data for b) </data> … </root> 我的做法是做一些事情: myobjects = Array.new(); ["a","b","c","d","e"].forEach(function(str) { database.hmget("data:" + str,function(err,obj){ myobjects.push(obj) }); }); now_serialize_myobjects(); 是否有可能等待forEach -loop完成, 并确保database.hmget()中的所有对象都存储? 所以当调用函数now_serialize_myobjects() ,所有对象都覆盖了吗? 什么是最好的方法来解决这个问题?

Javascript将数组转换为对象

我一直在使用node和redis。 我遇到的问题是,当我在redis中使用hgetall时,它返回一个对象。 { uid: '6203453597', first_name: 'Name', last_name: 'Surname', gender: 'male', email: 'email@email.com', status: '1', chips: '4002043' } 但是,当我使用hmget并指定我想要的字段时,它将返回一个数组。 [ '6203453597', 'Name', 'Surname', '4002043' ] 所以,我想将数组转换为关联数组,就像第一个一样。 将代码和性能转换成最好的方法是什么? 我也使用redis中的multi命令。 所以它在第一个例子中返回一个对象数组,在第二个例子中它返回一个数组数组。 所以,重要的是高效和自动,而不是手动。 YUI的dataschema函数是我正在寻找的。 然而,它需要在node.js上完成,我使用的唯一第三方实用工具是下划线。 有没有这样做的简单方法,或者我需要手动转换一个循环下摆。 谢谢,

请求处理如何与rails,redis和node.jsasynchronous?

对于Web开发,我想混合使用rails和node.js,因为我想从两个世界中获得最好的效果(rails for fast web development and node for concurrency)。 我知道有些人select使用完整的ruby stack,并将eventmachine集成到rails controller中,这样每个请求在事件循环模型中都可以使用光纤进行非阻塞。 我已经能够理解这是如何工作的大局。 但是,我想尝试使用消息队列概念的rails和node.js进行非阻塞请求处理。 我听说这可以通过使用redis作为中介来实现。 我仍然无法弄清楚现在是如何工作的。 从我所能理解的:所以我们有2个应用程序A(rails)和B(node.js)和redis。 Rails应用程序将处理来自通过REST方式通过控制器的用户的请求,然后从那里的轨道将通过redis传递,然后redis将形成队列和node.js应用程序将拿起该队列,并做任何必要的事后(写或从后端数据库读取)。 我的问题: 那么如何提高并发性和可伸缩性呢? 从我所知,因为rails通过控制器同步处理请求,然后写入redis,即使node.js结束可以asynchronous拾取队列,请求仍将被阻塞。 (我有一种感觉,它不是asynchronous的,但如果不是端到端的非阻塞)。 如果redis是中介,node.js会被认为是代理还是应用程序? 我是redis的新手,仍然在学习。 如果我为我的后端数据库(如mongoDB或couchDB)使用100%的noSQL解决scheme,它们可以被redis完全replace,或者redis更像是一个类似rabbitMQ的消息队列工具吗? 消息队列是一个不同于线程或事件循环模型的并发概念,还是应该补充它们? 这就是我的问题。 我是消息队列概念的新手。 将欣赏任何帮助和指向正确的方向和文章,帮助我了解更多。 谢谢。

问题线程函数执行nodejs / redis

我有一个很大的问题执行我的程序。 我们使用redis hkey并testing这个密钥是否存在 hgetall tags "X5" "6" "X2" "7" 这是程序: function firstChoiceChannel(){ var i=0; var listRep console.log(tags); for(var k in tags){ console.log('@'+k+'|'+tags[k]); client.hexists('tags',tags[k],function(err,rep){ console.log(tags[k]+"=>"+k+' i '+rep) if(rep===1){ client.hget('tags',tags[k],function(err,rep){ console.log('value:'+rep); }) console.log('ok'); } }); } } 这是控制台中的执行程序 [ 'X1', 'X2', 'X3', 'X5' ] @0|X1 @1|X2 @2|X3 @3|X5 X5=>3 i 0 X5=>3 i 1 ok X5=>3 i […]

外部数据库与redis连接?

我正尝试使用connect-redis连接到第三方Redis数据库。 任何想法有什么不对? app.use(express.session({ store: new RedisStore({host: keys.redis.url, port: keys.redis.port, db: keys.redis.db, pass: keys.redis.pass}), secret: 'keyboard cat' })); 错误:Redis连接到redis://the.db.com:9313失败 – getaddrinfo在RedisClient.on_error上的ENOENT(/node_modules/connect-redis/node_modules/redis/index.js:136:24)在Socket。 (/node_modules/connect-redis/node_modules/redis/index.js:70:14)在Array.emit(events.js:67:17)在Array.0(net.js:562:16)在EventEmitter._tickCallback (node.js中:192:40)

for循环从redis延迟获取项目

我正在使用Node.js w / node_redis,并在一个对象中循环,在Redis中查找数据,然后返回结果。 我有这样的设置: for (var key in items) { if (items.hasOwnProperty(key)) { app.client.llen(items[key].id+'_click', function(err, total) { items[key].total = total; }); } } callback(items); 问题是,在完成对redis的调用之前,它会循环。 因此,在实际更新总值之前调用callback函数。 由于延误,似乎也略过了一些项目。 有没有更好的方法来处理这个问题? 谢谢! 编辑: 好的,我已经更新了 getTotal(function () { callback(items); }); getTotal = function (callback) { var count = 1; for (var key in items) { if (items.hasOwnProperty(key)) { […]

在Rediscallback中使用node.js http代理

考虑到这个不完整的片段: var util = require('util'), nconf = require('nconf'), http = require('http'), httpProxy = require('http-proxy'), express = require('express'), repoServer = express.createServer(), redis = require('redis'), redisClient = redis.createClient(); // (…) var proxy = new httpProxy.RoutingProxy(); http.createServer(function (req, res) { console.log("URL", req.url); if (req.url) { var token = req.url.split("/")[1]; // if I leave this code here it works […]

node.js:来自主集群的控制

是否可以从主群集dynamic地打开/closuresredis订阅? 我问的原因是我只想一次订阅一个集群,但是如果集群不存在,我需要另一个订阅。 从根本上说,主集群是否可以通过api向分叉的集群发送消息?