草庐IT

nodejs-expressjs

全部标签

node.js - NodeJS 服务器上的 ENOTFOUND 到带有 Docker 的 Redis

所以我尝试使用docker-compose将我的服务器和数据库放入docker容器中。我目前拥有的docker-compose文件如下所示:version:"2"services:api:build:.ports:-"3000:3000"command:npmrun-scriptdockernetworks:-backendmongodb:image:mongo:latestports:-"27017:27017"networks:-backendredis:image:redis:latestports:-"6379:6379"networks:-backendnetworks:ba

unit-testing - 如何执行涉及 redis、socket.io 和 nodejs/express 的单元测试?

我目前在尝试创建涉及socket.io、redis和express交互的单元测试时遇到问题。我正在寻找有关如何最好地模拟这些交互的策略。例如,我正在使用socket.io-client来模拟socket.io到我的快速服务器的连接/行为,但是当我添加一个测试来检查redis是否存储来自socket.io的正确信息时,我发现自己需要还在redis单元测试中模拟socket.io,这反过来意味着我需要模拟express服务器。这导致我似乎正在重写另一个服务器只是为了对我正在尝试测试的实际服务器进行单元测试。有没有人必须这样做?如果是的话,你能给我指点资源吗(google/stackover

node.js - Pub/Sub Redis - NodeJS 服务器之间的通信

我计划在需要相互通信的两台NodeJS服务器上使用Redis发布/订阅功能。让服务器A和B:我将A作为发布者“a”,B作为发布者“b”,然后A订阅“b”,B订阅“a”。但是有问题。如果A断开连接怎么办?B将如何识别它?它会引发一些错误吗?如果没有,如何实现? 最佳答案 redis运行在什么地方?听起来您的两台服务器将各自发布到一个队列并订阅另一个队列。它们中的任何一个连接到Redis还是断开连接都没有关系,但是如果您订阅的队列有问题,客户端将收到error事件(参见https://www.npmjs.com/package/redi

node.js - NodeJS 和 Redis 空响应

我正在开发一个NodeJS应用程序,它在它创建的Redis数据库上运行良好。同一应用程序的旧版本使用的数据库中的信息略少。我的目标是通过为可能无效的查询引入错误处理来将我的新应用程序与旧数据库一起使用。当我将我的开发应用程序切换到旧数据库的副本时,出现以下错误:/root/z-nomp/node_modules/redis/lib/utils.js:7if(reply.length===0||!(replyinstanceofArray)){^TypeError:Cannotreadproperty'length'ofundefinedatObject.replyToObject[as

node.js - 如何在多个 docker 容器从 redis kue nodejs 消耗时一次处理单个作业

我有多个docker容器,它们使用来自同一个rediskue队列的作业。问题是他们从事相同的工作。我的需要是在一个容器上工作,然后在它完成一些其他容器工作之后。作业的顺序很重要。如果我不能在rediskue中完成,但可以与其他队列管理器(如kafka)一起完成,那也很好 最佳答案 我所做的是使用switchcase保持状态机:varindex;functionwhatever(){if(typeofstate==='undefined'){state=0;}switch(state){case0://Dowhateverstuffn

mysql - 具有持久连接的 Nodejs (MySQL/Redis)

我想知道与MySQL/Redis建立/保持连接的最佳方式是什么(来自nodejs):存储在一个对象中(conn)或创建一个新的对象每个请求的连接?即:1,我们应该为每个nodejshttp请求使用一个连接吗?使用连接池?还是每个新请求都有一个连接(因此重新连接应该很重要,因为连接可能会随机丢失)?性能如何?2、MySQL和Redis在维护这种连接方面有什么区别? 最佳答案 我会告诉你我过去是如何做到这一点的。1,Shouldweuseasingleconnectionforeverynodejshttprequest?Useconn

node.js - NodeJS 服务器没有用于 Redis 订阅的 http

我想开发一个仅订阅Redischannel并保持事件状态以处理接收到的消息的进程。我写了下面的代码:varredis=require("redis");varsub=redis.createClient({host:process.env.REDIS_HOST});console.log('subscribing...')sub.on('subscribe',()=>console.log('subscribed'));sub.on('message',(ch,msg)=>console.log(`Receivedmessageon${ch}:${msg}`));console.log

node.js - 多个 NodeJS 服务器的多个 redis 实例

经过一些研究,我得出结论,我可以在我的CentOS服务器上为我运行的每个NodeJS服务器运行多个Redis实例(我使用Redis来存储session)。我关注了theseinstructions并且两个实例都在两个不同的端口上正常运行。在我的NodeJS服务器上,我按如下方式配置了Redis:import*assessionfrom"express-session";varRedisStore=require('connect-redis')(session);varredis=require("redis").createClient();app.use(session({secr

javascript - nodeJS - ioredis NPM 模块 - 订户事件有问题

constRedis=require('ioredis');constsub=newRedis();constpub=newRedis();sub.on('subscribe',(channel,count)=>{console.log("Subbedtochannel:"+channel);})sub.on('message',(channel,message)=>{console.log("Messagerecieved:"+message);})setTimeout(()=>{console.log("Attempting");sub.subscribe("hey");pub.p

javascript - 为什么 Redis (Nodejs) 在将新项目添加到数据库后会自动更新其缓存?

我想尝试一下Redis,所以我编写了用于获取博客的简单端点,很快就遇到了“甜蜜的问题”,因为代码确实有效,但我不知道为什么。我的想法是在初始请求后将博客存储在缓存中,这符合预期,但是,根据我的理解,我应该在添加新博客后遇到问题,但我没有。我将发布代码以获得更多视觉解释。client.get=util.promisify(client.get);constcachedBlogs=awaitclient.get(req.user.id);if(cachedBlogs){returnres.send(JSON.parse(cachedBlogs));}constblogs=awaitBlog