Tag: redis

如何在多个nodejs实例中共享一个对象?

我有一个function,其中用户发布数据包含less数userid和一些数据相关的这些userid,我将它保存到postgresql数据库。 我想保存这个返回的userid在一些对象。 我只想检查用户标识是否存在于这个对象中,然后只调用数据库。 这个检查发生得非常频繁,所以我不能每次都检查数据库只是为了检查是否有任何数据目前的用户ID。 问题是,我有不同的服务器上运行多个nodejs实例 ,所以我怎么能有一个共同的对象。 我知道我可以使用redis / riak在服务器上存储键值,但是不想仅仅为了一个单一的情况增加复杂性/学习(我之前从未使用过redis / riak)。 任何build议?

使用redisbuild立与socket.io和NodeJs的实时聊天

我想为我的项目构build一个实时聊天系统,但实际上我有一些Redis问题,因为我希望我的数据尽可能地保存。 我的问题: 我想使用Socket Io在一个封闭的组(两个人)中进行实时聊天,但是如何存储消息? Redis是一个关键的价值商店,这意味着如果我想存储的东西,我需要添加一个唯一的关键,我的数据才能被存储。 如果同一个用户发布多个消息,我将在redis中使用哪些密钥? 我正在考虑独特的ID作为唯一的密钥,但因为我想能够获取这个评论,当用户login聊天页面,但如果我这样做,我需要写另一个数据库聊天ID与发布的用户信息 我忘了什么吗? 有没有最好的方法来做到这一点? 对不起,我的英语不好。

unit testing连接数据库的asynchronousfunction

那么我有一些函数连接到数据库(redis)并返回一些数据,这些函数通常是基于承诺,但是asynchronous和包含stream。 我看了一些关于testing的东西,我select了用磁带 ,sinon和proxyquire,如果我嘲笑这个function,我会知道它的工作原理? 以下函数(listKeys)在完成扫描后返回(通过承诺)存在于redis db中的所有密钥。 let methods = { client: client, // Cache for listKeys cacheKeys: [], // Increment and return through promise all keys // store to cacheKeys; listKeys: blob => { return new Promise((resolve, reject) => { blob = blob ? blob : '*'; let stream = methods.client.scanStream({ match: blob, count: 10, }) […]

如何检查与ioredis,如果一个连接build立到redis服务器?

我正在编写一个nodejs 5.10.1应用程序,我连接到一个redis服务器。 我使用https://github.com/luin/ioredis中的ioredis nodejs模块。 我似乎无法弄清楚如何检查连接build立到服务器。 连接到redis服务器的代码非常简单: var Redis = require('ioredis'); var redis = new Redis(); 该文档在连接事件下指出以下内容 You can also check out the Redis#status property to get the current connection status. 真的不明白它是什么意思或如何使用它。 有任何想法吗 ?

将ElastiCache连接到弹性Beanstalk实例

我一直在阅读关于在我的EB实例和我的Redis端点之间创build连接的Elastic Beanstalk和ElastiCache文档。 我已经将我的端点添加到了我的Node.js应用程序的会话configuration中,但是它并没有连接到我的Redis实例,如访问使用该会话的任何页面时所引发的错误所指示的那样。 我知道Elastic Beanstalk和ElastiCache之间的安全组需要保持一致,但是是否需要对环境进行调整才能连接两者? 这是我的Node.js应用程序中的Redis连接: //Session Cookie app.use(cookieParser()); app.use(session({ store: new RedisStore({ host: 'redis-production.dfdfa.0001.use1.cache.amazonaws.com', port: 6379 }), secret: process.env.SECRET, resave: true, saveUninitialized: true, cookie: { httpOnly: true, secure: false //turn to true on production once https is in place } }));

NodeJS Redis监听器

是否有可能在nodejs中侦听来自redis的更改的值事件? 情况:我有一个NodeJS应用程序,它显示来自另一个应用程序(同一台服务器上的原生应用程序,让我们调用它,让我们调用节点应用程序栏)的实时数据。 Foo将机器状态保存在redis键“状态”中。 栏注册并显示它。 你怎么能抓住这个事件? 编辑 Pierres解决scheme正常工作获取键,但我如何检索值? 我试过这样,但是一个parseError发生: var redis = require("redis"); var client_redis = redis.createClient(); client_redis.config('set', 'notify-keyspace-events', 'KEA'); client_redis.subscribe('__keyevent@0__:set'); client_redis.on('message', function(channel, key) { client_redis.get(key, function(error, result) { if (error) console.log(error); else console.log(result); }); }); 错误 $ { ReplyError> at parseError (/home/pi/Website/node_modules/redis-parser/lib/parser.js:181:12) -bash: syntax error near unexpected token `(' 编辑#2 看起来像client_redis.subscribe('…')阻止客户端读取值到相应的键。 我添加了第二个读取值的客户端。 工作示例: var redis […]

将string数据与压缩(缓冲)数据一起存储在Redis上

是否有机会在Redis上将Buffer数据与string数据一起存储。 伪代码: // Data compression var user = { name: "Xyz" } var userString = JSON.stringify(user) var userBuffer = new Buffer(userString, "utf8") var compressed = zlib.gzip(userBuffer) // Adding data onto Redis var data = { id: 1, compressed: compressed } var dataString = JSON.stringify(data) redis.set("test", dataString) 虽然看起来不可能我想问。 有没有机会一起存储压缩数据? 编辑: 将未压缩数据的压缩数据存储在同一个密钥中后,我无法解压上面的用户数据。 伪代码: var dataString = redis.get("test") […]

Tile38靠近查询节点callback函数不起作用

我正在构build一个小型的GEO应用程序,它使用http://tile38.com/和https://www.npmjs.com/package/tile38节点模块。 一切工作正常,但我无法从节点模块的NEARBY查询结果。 它看起来像callback函数不工作,我花了很多时间,但找不到出路。 我想要的是从附近的查询得到的结果,并分配给一个variables。 这里是代码: var Tile38 = require('tile38'); var client = new Tile38({host: 'localhost', port: 9851, debug: true }); // set a simple lat/lng coordinate client.set('fleet', 'truck1', [33.5123, -112.2693]) // set with additional fields client.nearbyQuery('fleet').distance().point(33.5123, -112.2693, 6000).execute((err, results) => { console.log("########"); // this callback will be called multiple times if (err) { console.error("something went […]

可以设置redis pub / sub消息的过期时间

我想设置过期时间来redis发布pub / sub消息。 我怎么做nodeJS? var redis = require('redis'); redis.createClient().publish('some channel', 'some message', function(err) { if (err) { console.error('error publishing:', err); } }); 上面是用来popup消息的代码。 我必须做什么修改发布的消息到期时间。

如何将php数组存储到redis中并在nodejs中检索?

我使用redis (predis / prediscomposer php)在php中保存一些id,如下所示: $redis = new Client(); $mailJson = $redis->get('mail'); $mail = json_decode($mailJson); $no = rand(100,500); array_push($mail, $no); $redis->set('mail', json_encode($mail)); 我像这样检索这个数组: var redis = require("redis"), client = redis.createClient(); client.on('connect', function() { client.get('mail', function(err, mailIds) { console.log(mailIds); }); }); 但mailIdsvariables是string,而不是像这样的数组: [1,200,500,500,400,100,200,100] 方式可以访问mailIds项目?