Tag: redis

无法使用app.get方法连接到redis

我正在学习redis用例。 因为每个教程都build议caching数据更好。 我已经做了一个简单的演示,我试图在Web服务get方法中连接到redis服务器。 var redis = require('redis'); var client = redis.createClient(); var express = require('express') var app = express() var port = process.env.PORT || 8080; // <== this is must app.get('/fetch_offers', function (req, res) { client.on('connect', function() { console.log('connected'); }); }); app.listen(port, function () { console.log(port) }) 我试图在本地主机上访问它,如http:// localhost:8080 / fetch_offers 我用console.log方法debugging它,但它不打印连接的消息。 当我在app.get…之外创build这个方法时,它会执行node app.js 我希望它应该做一个URL的redis连接。 […]

如何将对象数据存储在redis中的nodejs rest服务中

我正在尝试在nodejs使用其他Web服务,并使用nodejs进行caching以提高性能。 我想保存为具有ID,报价名称和供应商的报价对象。 我不想有不同的关键。 在一个单一的关键是怎么做。 app.get('/insertOffers', function(req, res) { const {id, offerName, offerVendor} = req.query; client.set('offers', ) // client is my redis client });

如何在phantomjs脚本中使用“node_redis”?

我想制作一个phantomjs脚本,作为消费者从redis服务器读取数据的值。 我看到存在这个客户端节点( https://github.com/NodeRedis/node_redis ),我连接,写入和读取没有问题执行节点脚本。 var redis = require("redis"), client = redis.createClient(); client.on("error", function (err) { console.log("Error " + err); }); client.set("string key", "string val", redis.print); client.get("string key", redis.print); 但是当我用phantomjs做同样的事情时,我得到这个错误: ReferenceError: Can't find variable: process phantomjs://platform/command.js:4 TypeError: undefined is not a constructor (evaluating 'util.inherits(assert.AssertionError, Error)') phantomjs://platform/assert.js:161 TypeError: undefined is not a constructor (evaluating 'util.inherits(RedisError, Error)') phantomjs://platform/redisError.js:17 […]

redis expire不会在服务器中过期

我正在尝试自动将redis中的密钥过期 when=10 unit='seconds' redisClient.expireat(key,moment().add(when,unit)); 在redis cli键*我可以看到我设置的密钥 > TTL 472962f1-10ad8-4c4d-bc5e-2e38b632f36 (integer) -1 > Exists 472962f1-10ad8-4c4d-bc5e-2e38b632f36 (integer) 1 10秒后它不会被删除! 我正在使用时间来得到的时间,因为我必须分享的信息,作为回应,这个键不会在这之后工作。 var whenKeyExpire = moment().add(when,unit).format('MM-DD-YYYY hh:mm:ss A')

使用Socket.io将消息发送给一个用户

我正在寻找方式发送消息到一个特定的客户端与nodejs,socket.io,Redis的(这也意味着保持跟踪该用户) 请你帮忙 编辑 var app = require('express')(); var server = require('http').Server(app); var io = require('socket.io')(server); var redis = require('redis'); var user=[]; server.listen(3000); io.on('connection', function (socket) { var redisClient = redis.createClient(); redisClient.subscribe('message'); user[socket.handshake.query.userid] = socket; socket.on('create', function(id) { user[id] = socket; }); redisClient.on("message", function(channel, message) { var message=JSON.parse(message); var id=JSON.parse(message.id); var target=id; console.log("target id => "+user[target].id+" […]

私人聊天(PHP + Socket.io)与PHP会话

我正在开发一个使用php + socket.io的私人消息系统的网站。 从一开始,我使用socket.emit将sender_id , recipient_id和text传递给了socket.io,但后来才意识到这可能很容易被篡改,并希望以某种方式使用我的php会话,以确保sender_id确实是sender_id 。 我现在有下面的设置,但我真的不明白如何将会话从index.php传递到app.js,然后连接到app.js中的redis-server以获取保存user_id的PHPSESSID。 运行nginx + php-fpm(index.php)的服务器1 服务器2运行node.js与socket.io(app.js) 运行redis进行会话pipe理的服务器3 我的代码现在看起来像下面,但显然缺less现在的Redis的一部分,我真的appriciate一些帮助。 谢谢! 的index.php <?php session_start(); if ($_SESSION['user_id'] == false){ header("Location:login.php");die; } ?> <script> var socket = io('https://app01.dev.domain.com:8895'); socket.on('connect', function(){ console.log("Connected to websockets"); }); socket.on('event', function(data){}); socket.on('disconnect', function(){}); $('.chat-message').keypress(function (e) { if (e.which == 13) { console.log("send message"); var friend_id = $(this).attr('id'); friend_id […]

使用nodeJS的sentinal识别Redis Master

我有2个Redis服务器一个主机和另一个从机(复制)。 一旦师父由于某些原因被closures,奴隶将成为主人,并继续作为主人,直到该服务器发生错误。 我有一个nodeJS服务器,我想将数据推送到当前以Master身份运行的Redis。 我有一个监控Redis服务器的哨兵,但我的问题是如何使用nodeJS从sentinel获取主信息? 如果有办法,它是否会自动将数据推送到备用的redis服务器,而无需重启服务?

在Redis中存储和检索坐标数据

我使用Redis作为caching系统来存储数据,以避免在API上不必要的消耗。 我在想的是在从API获得结果之后,将坐标(例如作为关键字)和数据存储在Redis上,然后再次使用外部API,然后在Redis中传递新的坐标检查与保存的坐标(以米为单位)相匹配,如果匹配,则将存储的数据带给我。 我已经search了至less1小时,找不到符合我需要的相关结果。 例如, GEOADD无法帮助我,因为它不会由Redis自动过期。 唯一的解决scheme是将坐标存储为带有json值的键(例如: -51.356156,-50.356945 ),如果与其他坐标匹配,则使用函数式编程检查所有键(坐标)。 但它不雅,也performance不佳。 有任何想法吗? 我在NodeJS(Express)中使用Redis。

node.js中的Redis错误

我在Node.js中使用Redis,并且在实时服务器上部署时,它开始崩溃,出现以下错误消息: 请求的数量是每秒更多。 at Object.replyToObject [as reply_to_object] (/home/ubuntu/webservices/node_modules/redis/lib/utils.js:7:15) at RedisClient.handle_reply (/home/ubuntu/webservices/node_modules/redis/index.js:319:23) at multi_callback (/home/ubuntu/webservices/node_modules/redis/lib/multi.js:79:43) at Command.callback (/home/ubuntu/webservices/node_modules/redis/lib/multi.js:116:9) at normal_reply (/home/ubuntu/webservices/node_modules/redis/index.js:726:21) at RedisClient.return_reply (/home/ubuntu/webservices/node_modules/redis/index.js:824:9) at JavascriptRedisParser.returnReply (/home/ubuntu/webservices/node_modules/redis/index.js:192:18) at JavascriptRedisParser.execute (/home/ubuntu/webservices/node_modules/redis/node_modules/redis-parser/lib/parser.js:553:10) Socket.<anonymous> (/home/ubuntu/webservices/node_modules/redis/index.js:274:27) emitOne (events.js:116:13) Socket.emit (events.js:211:7) addChunk (_stream_readable.js:263:12) readableAddChunk (_stream_readable.js:250:11) at Socket.Readable.push (_stream_readable.js:208:10) at TCP.onread (net.js:594:20) 我编写了通用代码来打开和closuresRedis连接,并尝试重新使用连接。 (不知道这是重复使用它的正确方法)。 我正在使用Redis“^ 2.7.1”并在Ubuntu上本地安装Redis。 我能够进入Redis控制台并查看存储的密钥。 但不知道为什么它非常频繁地给出上述错误信息。 我正在使用pm2模块,所以一旦崩溃就重新启动。 以下是Node.js中的Redis代码 var Promise = […]

与Express和Redis的asynchronous通话

我正在使用Redis Pub / Sub将消息从Node.js传输到后端服务器。 问题是如何从订阅者消息事件中获取消息以便在快速响应中访问。 这是我应该照顾的中间件? 还是有一个更简单的方法与asynchronouscallback? 以下是我正在谈论的一个基本示例: subscriber.on("message", function (channel, message) { console.log("received: " + channel + ": " + message); }); server.get('/', function(req, res){ publisher.publish(server.uuid, server.uuid + ": message here"); res.send(message); }); 更新: 解决了我自己的问题,通过传递响应对象与id到asynchronous队列。