Tag: redis

如何将用户连接到套接字

我试图连接用户会话ID创build与每个用户login后创build的cookie连同它连接到套接字…任何方向或示例将是伟大的…我使用nodejs,express,redis,套接字。 io,并使用mongodb为我的分贝的东西的其余部分。 这里是app.js文件中的代码(但我不确定它的一些) var connect = require('connect'); var RedisStore = require('connect-redis')(express); var redis = require("redis").createClient(); var io = require('socket.io'); var notificationsN = io.listen(server); app.use(express.session({ secret: "secret sauce", store: new RedisStore({ host: 'localhost', port: 3000, client: redis }) })); //Not sure if below is correct actually… need to connect it with the current user… how do […]

Redis超时错误

任何人都可以告诉我这个testing代码有什么问题吗? 程序工作正常,但不可避免地,我得到Redis的超时错误后,几个小时的不使用。 请注意,我已将此邮件上的Redis主机和密码更改为虚假信息。 请注意,无论使用node-redis还是iris-redis驱动程序,我都会得到同样的错误。 var express = require('express'); var app = express(); // Redis Data Store var redis = require("iris-redis"); var client = redis.createClient( 6379, "nodejitsudb5555563948.redis.irstack.com"); client.auth("fehehyrj971946ef332e975fbebb4"); client.on("ready", function() { client.iris_config(function(er, config) { if(er) throw er; console.log("Got my server config: %j", config) // client.quit() }); }); // Define a test route app.get('/test', function(req, res) { […]

如何格式化node_redis信息function输出?

我想在节点上检查我的电脑上的Redis信息,所以我使用node_redis并运行info函数: var redis = require("redis"), client = redis.createClient(); client.on("connect", function () { client.info(function (err, replay) { console.log(replay); }) }) 但是回复是非格式的: `#Server\r\nredis_version:2.6.16\r\nredis_git_sha1:00000000\r\nredis_git_dirty:0\r\nredis_mode:standalone\r\nos:Linux 3.8.0-29-generic x86_64\r\narch_bits:64\r\nmultiplexing_api:epoll\r\ngcc_version:4.6.3\r\nprocess_id:2941\r\nrun_id:e60f261a6f4f6f081563a47961315eff6b1c005d\r\ntcp_port:6379\r\nuptime_in_seconds:1777\r\nuptime_in_days:0\r\nhz:10\r\nlru_clock:2040689\r\n\r\n# Clients\r\nconnected_clients:2\r\nclient_longest_output_list:0\r\nclient_biggest_input_buf:0\r\nblocked_clients:0\r\n\r\n# Memory\r\nused_memory:562584\r\nused_memory_human:549.40K\r\nused_memory_rss:2031616\r\nused_memory_peak:561784\r\nused_memory_peak_human:548.62K\r\nused_memory_lua:31744\r\nmem_fragmentation_ratio:3.61\r\nmem_allocator:jemalloc-3.2.0\r\n\r\n# Persistence\r\nloading:0\r\nrdb_changes_since_last_save:0\r\nrdb_bgsave_in_progress:0\r\nrdb_last_save_time:1383553917\r\nrdb_last_bgsave_status:ok\r\nrdb_last_bgsave_time_sec:-1\r\nrdb_current_bgsave_time_sec:-1\r\naof_enabled:0\r\naof_rewrite_in_progress:0\r\naof_rewrite_scheduled:0\r\naof_last_rewrite_time_sec:-1\r\naof_current_rewrite_time_sec:-1\r\naof_last_bgrewrite_status:ok\r\n\r\n# Stats\r\ntotal_connections_received:3\r\ntotal_commands_processed:5\r\ninstantaneous_ops_per_sec:0\r\nrejected_connections:0\r\nexpired_keys:0\r\nevicted_keys:0\r\nkeyspace_hits:0\r\nkeyspace_misses:0\r\npubsub_channels:0\r\npubsub_patterns:0\r\nlatest_fork_usec:0\r\n\r\n# Replication\r\nrole:master\r\nconnected_slaves:0\r\n\r\n# CPU\r\nused_cpu_sys:0.13\r\nused_cpu_user:0.19\r\nused_cpu_sys_children:0.00\r\nused_cpu_user_children:0.00\r\n\r\n# Keyspace\r\n' 我怎样才能把它变成一个对象? 喜欢: { redis_version:2.6.16, redis_git_sha1:00000000, redis_git_dirty:0, …… } 这样我就可以读取每个属性的值,获得我需要的信息

在nodejs / expressjs中使用RedisStore

我想快速访问会话数据,所以我想我会尝试在configurationexpress时声明一个connect-redis会话存储。 但是,我不明白为什么这不起作用: var express = require('express'); var http = require('http'); var RedisStore = require('connect-redis')(express); var app = express(); app.set('port', process.env.PORT || 3000); app.use(express.bodyParser()); app.use(express.cookieParser()); app.use(express.session({ secret: "keyboard cat", store: new RedisStore })); //app.use(express.session({ secret: "keyboard cat" })); app.use(app.router); app.get('/', function(req, res){ console.log('/'); req.session.items = [ 'apple', 'orange' ]; res.end('items configured'); }); app.get('/items', function(req, res){ console.log('/items: […]

将WebM文件存储在Redis(NodeJS)中

我正在寻找一个将WebM文件存储到Redis的解决scheme。 我们来解释一下情况: NodeJS服务器从客户端接收WebM文件,并将其保存到服务器文件系统中。 然后它必须保存在redis的这个文件,因为我不想pipe理redis和文件系统。 这样我可以用redis命令删除video。 我想用fs.readFile()读取文件,然后将其保存到一个缓冲区中,但我不知道如何使用编码格式,我不知道如何引用这个过程来将WebMvideo回送给客户端发出请求时。 这是继续进行的好方法吗? 任何build议? PS:我使用强大的上传文件。 编辑:我find了一种方法来进行,但theres另一个问题: var file = fs.readFileSync("./video.webm"); client.set("video1", file1, function(){ client.get("video1", function(err, data) { var buffer = new Buffer(data, 'binary'); // file ≠ buffer }); }); 这是一个编码问题? 像unicode / UTF8 / ASCII? 也许节点和Redis使用不同的编码?

在node.js中正确放置具有多个asynchronousredis调用的callback

我正在用node.js和redis构build作业队列系统,并试图找出如何最好地将callback实现到这个函数中。 在代码中,我只有cb()调用了3次,这是为了强调我正在讨论的redis调用。 显然,我可以嵌套三个调用(rpush – > sadd – > sadd),但是由于它们不相互依赖,那么这种做法会打败asynchronous处理的目的,不是吗? Queue.prototype.pushJob = function(job, cb) { var that = this; cb = cb || function(err, res) {}; if (job.name) { that.Database.incr("id:jobs", function(id) { //Increment redis variable id:jobs that.Database.client.hmset('job:' + id, { //Callback of incr, set the hash of job:incr "name": job.name, "status": job.status, "payload": job.payload, "priority": job.priority […]

坚持聊天消息在节点

我已经使用节点,express和socket io构build了一个聊天应用程序。 但是当我刷新页面时,所有早期的聊天消息都将丢失。 我做了一些研究,并且阅读了REDIS,但是我在如何整合redis方面遇到困难。 我search了聊天消息持久化的几个节点redis项目,但没有运气。 请build议我一个很好的方法,如何坚持聊天消息,以及使用哪种技术。 任何教程链接非常感谢。

避免在用对象返回一个redis列表时迭代

我将对象的JSON.stringified版本保存到Redis列表。 我需要使用列表,因为我正在使用LPUSH / RPUSH和LTRIM。 问题是node_redis正在保存我的string化对象的转义版本,所以当我检索列表范围时,我无法parsing整个列表,我必须遍历列表并parsing列表中的每个项目。 有没有办法parsing整个列表时检索它,而不是迭代整个列表?

从经典ASP ..使用Redis ..没有COM?

我们正在考虑在应用程序堆栈中引入Redis作为高性能键/值存储,并且我一直在研究从Classic ASP与Redis进行交互的方式。 不幸的是,我并没有太在意,因为实现客户端的唯一build议方式似乎是使用COM包装器或类似的方法来使用.net客户端。 我已经看到了一些将Node.JS客户端转换为在经典ASP下运行的引用,但是鉴于Classic的JS引擎的时代,这看起来并不是一个好的方法。 在我们着手开发或者使用node.js或类似的语言来编写一个wrapper-rest API之前,有没有人为Redis创build一个本地(VBScript)客户端,他们不介意共享…? 我也在探讨使用这个问题中提到的WSC的想法,但是如果有一个本地解决scheme的话,我们将会非常乐意看到… 非常感谢,Tim

如何将属性关联到Redis Store中的socket.io对象?

我正在用Nodejs和Socket.io来处理一个复杂的游戏,我需要将socket.io对象存储在内存中,还要为套接字对象指定属性(比如名称,来自套接字的某个动作的计数器等) 在下面的代码中,我已经展示了我想要实现的一个例子。 我将所有套接字存储在一个数组中,并且还有另一个存储套接字名称属性的数组。 在任何时候,如果我得到名称的请求,我可以从内存中的数组中select名称。 但是现在我有太多的用户,我需要在多个服务器之间对我的应用程序进行负载平衡。 所以我不能将对象和属性存储在内存中。 我需要将它们存储在数据库中。 我打算使用Redis。 这个链接告诉我们如何使用Redis Store套接字 – https://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IO 但是,如何将我的其他属性(比如名称等)与Redis Store中的套接字对象相关联? 如果有一些新的方法来实现这一点,请让我知道。 var socket_array = new Array(); var socket_name_array = new Array(); var io = require('socket.io').listen(80); io.sockets.on('connection', function (socket) { socket_array.push(socket); var i = socket_array.indexOf(socket); var name = generate_random_name(); socket_name_array[i]= name; socket.on('get_name', function (data) { var i = socket_array.indexOf(socket); var name= socket_name_array[i] […]