Tag: redis

在Redis中存储事件时间表

我想在Redis的时间表中存储事件列表。 我正在考虑自1970年以来的sorting集,以秒为单位进行评分,允许快速查找和范围search。 问题是,我希望每个事件代表一个对象,用几个键(大概3个也许),所以我会存储一个有序的一组ID – 应用程序然后将查找基于ID的哈希。 所以谈话会是这样的: > ZRANGEBYSCORE events start end 1) "16" 2) "17" > HGETALL events:16 1) "key1" 2) "val1" … > HGETALL events:17 … 有没有更好的方法来组织或做一些事情,避免应用程序对每个结果单独调用。 一切都可以在redis服务器端完成,以避免这种开销? 这是一个大问题吗? PS。 我正在使用节点客户端,但我的问题也适用于其他语言。

Windows Azure中的node.js应用程序部署

我已经使用node.js,mongodb,redis,express,socket.io构build了我的应用程序,并计划将其部署在Azure中。 我已经看到azure对node.js有很好的支持,它也支持mongo。 但是我不太确定它是否支持redis。 redis好像是在unix / linux下准备好了,但是还没有准备好用于windows,尽pipe它在那里工作。 那么我们可以在一个azure色的linux虚拟机,并安装redis吗? 可能吗 ? 我可以带1个节点的虚拟机,1个为mongo,1个为redis? 如果我有一个群集节点,socket.io会有什么问题吗? 是否需要Nginx? 请把它作为在Azure中部署node.js应用程序的第一个计时器的问题。

Node.jscallback与node_redis

我仍然试图进入node.js,可能会得到一些不太正确的东西。 我期望完成的是首先查询包含房间列表的hmap。 这个列表将会迭代低谷获得每个房间的更多细节,如房间名称等。 以下是查询应该返回的内容: redis 127.0.0.1:6379> lrange rooms 0 -1 1) "room:5000" 和 redis 127.0.0.1:6379> hgetall room:5000 1) "name" 2) "room1" 3) "admin" 4) "user:1001" 5) "public" 6) "true" 这里是routes.index中的函数 exports.index = function(req, res){ var render_rooms = new Array(); req.app.settings.redis.lrange('rooms',0,-1, function(error, rooms) { if (error) { console.log('Error: '+ error); } else { rooms.forEach(function(room){ console.log("room: " […]

Socket.io失败并出现内部错误

我最近运行了npm install,它更新了我所有的软件包。 由于某种原因,这打破了我的networking服务器(每当我尝试加载一个页面,它只会加载部分的方式和死亡这个错误)。 我试着回滚版本的socket.io,redis和nodetime,它们是堆栈跟踪中显示的软件包,但是我没有让web服务器再次运行。 帮帮我? 我在OS X上运行。 events.js:66 throw arguments[1]; // Unhandled 'error' event ^ TypeError: First argument must be a Buffer at RedisClient.message (/Users/jchu/code/python/agles/ci/web/back/node_modules/socket.io/lib/stores/redis.js:126:24) at RedisClient.EventEmitter.emit (events.js:115:20) at RedisClient.return_reply (/Users/jchu/code/python/agles/ci/web/back/node_modules/socket.io/node_modules/redis/index.js:440:22) at RedisReplyParser.<anonymous> (/Users/jchu/code/python/agles/ci/web/back/node_modules/socket.io/node_modules/redis/index.js:81:14) at RedisReplyParser.EventEmitter.emit (events.js:88:17) at RedisReplyParser.add_multi_bulk_reply (/Users/jchu/code/python/agles/ci/web/back/node_modules/socket.io/node_modules/redis/lib/parser/javascript.js:311:14) at RedisReplyParser.send_reply (/Users/jchu/code/python/agles/ci/web/back/node_modules/socket.io/node_modules/redis/lib/parser/javascript.js:272:18) at RedisReplyParser.execute (/Users/jchu/code/python/agles/ci/web/back/node_modules/socket.io/node_modules/redis/lib/parser/javascript.js:222:22) at RedisClient.on_data (/Users/jchu/code/python/agles/ci/web/back/node_modules/socket.io/node_modules/redis/index.js:358:27) at Socket.<anonymous> (/Users/jchu/code/python/agles/ci/web/back/node_modules/socket.io/node_modules/redis/index.js:93:14)

在我的Rails应用程序中实现实时通知(消息)function

我需要在我的Rails应用程序中实现实时通知function。 任何人都可以告诉我什么是可能的好方法来实现这个function? 我的一位同事build议我使用node.js和redis。 这是正确的方式来进行此function。 提前致谢。

从redis获取密钥列表?

我有一个相同的约定更大的哈希集的一部分: redis.hmset("this:that:a", {"one": 'two', "three": 'four'}); redis.hmset("this:that:b", {"five": "six", "seven": "eight"}); var all_parts = {}; redis.keys("this:that:*", function(err, keys) { for (var i=0; i<keys.length; i++){ key = keys[i]; redis.hgetall(key, function(err, obj) { all_parts[key] = obj; if (i >= keys.length) { return console.log(all_parts); } else { return console.log('waiting'); } }); }; }); 导致console.log … { 'this:that:a': { […]

我如何使用arr.forEach来调用asynchronousJavaScript的redis调用?

我正在使用node.js和redis。 我有一堆key的redis数据库。 像这样的东西: 用户/克里斯/药水用户/皮特/药水用户/克里斯/种族用户/皮特/种族用户/克里斯/武器用户/皮特/武器 我想做一个redis调用,它检索所有的用户状态,把统计信息放到一个JS对象中,然后传递给客户端在浏览器中显示字符统计信息。 使用javascript我把用户名chris注入到redis调用中,像这样: KEYS user/u/* 它返回: 1) "user/chris/weapon" 2) "user/chris/race" 3) "user/chris/potion" 现在我可以迭代这些结果,用GET获取每个键的值,并创build一个javascript对象。 看起来超级简单,所以我写的代码。 我很快遇到了使用forEach的问题: var redis = require('redis'); var client = redis.createClient(); exports.getUserObject = function(requesteduser, callback) { var userstats = {}; // the object to hold the user stats once retrieved from the db client.KEYS('user/' + requesteduser + '/*', function(err, replies) […]

使用django-websocket-redis的asynchronousDjango

我试图用django-websocket-redis,我不明白它是如何工作,即使阅读文档..部分客户端(JavaScript /模板)很容易理解,但我想发送数据消息从一个客户端到其他我在这里阻止.. 连接每个客户端: var ws = new WebSocket('ws://localhost:8000/ws/foobar?subscribe-group'); ws.onopen = function(e) { console.log("websocket connected"); }; ws.onclose = function(e) { console.log("connection closed"); }; 如何pipe理我的views.py来创build它们之间的链接? 使用NodeJS,我使用这段代码将客户端连接在一起: io.sockets.on('connection', function (socket) { var data={"action": "connexion", "session_id": socket.id,}; socket.emit('message',data); socket.on('message', function(socket){ if (socket.action == "test") { io.sockets.socket(socket.code).emit('message',{"action": "move"}); //the socket.code is the session_id of the client one transmitted by a […]

雷迪斯多蓝鸟承诺

你知道一个使用Redbird客户端的多重交易命令蓝鸟承诺的方法吗? 因为,下面的代码永远不会结束。 var $redis = require('redis'), $p = require('bluebird'), $r = $p.promisifyAll($redis.multi()); $r.setAsync('key', 'test') .then(function(reply, data) { // … }); $r.exec(function() { $r.quit(); process.exit(); });

避免redis竞赛状况

我试图找出如何在更新redis时避免竞争状况。 这是我的场景:由于查询参数长度的限制,我有一个消息被分解成了多个http GET请求。 我使用redis来存储临时消息块,当我拥有所有的块时,我将它们连接起来并存储在数据库中。 块标有一个消息ID,我将这些块存储在一个'$'分隔的string中,由消息ID键入。 当我得到一个新的块时,我得到块string,然后追加新的块+'$',并将其设置回redis。 问题是我很担心,如果我打电话给set,并且set命令在我下一次获得之前没有完成执行,我将不会有最新的块string。 如果我有一个单一的Redis客户端,也许这将缓解这个问题,因为大概这些命令是按照服务器上接收到的顺序执行的? 任何洞察赞赏,包括build议如何构build消息重新组装的方式更为理智? 谢谢。