带有 redis 的 Heroku 不断记录信息以及套接字错误

问题描述 投票:0回答:1

我将heroku、redis 和nodejs 与express 一起使用。在我的节点应用程序上设置 redis 后,我能够缓存数据。但是,在 Heroku 日志控制台中,我不断收到以下格式的日志:

2024-04-21T18:54:09.000000+00:00 app[heroku-redis]: source=REDIS addon=redis-octagonal-55498 sample#active-connections=3 sample#load-avg-1m=3.63 sample#load-avg-5m=3.3 sample#load-avg-15m=3.96 sample#read-iops=0 sample#write-iops=0 sample#memory-total=16070704kB sample#memory-free=8981520kB sample#memory-cached=3846880kB sample#memory-redis=553608bytes sample#hit-rate=0.86207 sample#evicted-keys=0

它看起来不像无限循环,它正在将这些信息从一分钟记录到另一分钟。 但在这之间,我得到以下信息:

2024-04-21T18:55:20.062782+00:00 app[web.1]: Error connecting to Redis: SocketClosedUnexpectedlyError: Socket closed unexpectedly
2024-04-21T18:55:20.062819+00:00 app[web.1]:     at TLSSocket.<anonymous> (/app/node_modules/@redis/client/dist/lib/client/socket.js:194:118)
2024-04-21T18:55:20.062820+00:00 app[web.1]:     at Object.onceWrapper (node:events:633:26)
2024-04-21T18:55:20.062820+00:00 app[web.1]:     at TLSSocket.emit (node:events:530:35)
2024-04-21T18:55:20.062821+00:00 app[web.1]:     at node:net:337:12
2024-04-21T18:55:20.062821+00:00 app[web.1]:     at TCP.done (node:_tls_wrap:657:7)
2024-04-21T18:55:20.071389+00:00 app[web.1]: Connected to Redis

该错误允许redis重新连接。我可以继续使用我的缓存。

我需要提一下,这是我第一次使用redis,尤其是在生产中。 redis库的启动直接创建到我的express项目

app.js
文件中。

import redis from 'redis';
const REDIS_URL = process.env.REDIS_TLS_URL || process.env.REDIS_URL;

export const redisClient = redis.createClient({
    url: REDIS_URL,
    socket: {
      tls: true,
      rejectUnauthorized: false
    }
});
redisClient.connect();
redisClient.on('connect',   () => console.log('Connected to Redis'));
redisClient.on('error',     error => console.error('Error connecting to Redis:', error));

关于使用,我在控制器中使用了redisClient。 例如

        const cachedTargetMuscles  = await redisClient.get('targetMuscles');

你能帮我找出问题所在吗? 非常感谢,丹尼尔

javascript node.js sockets heroku redis
1个回答
0
投票

我想说,只要应用程序进程能够快速重新连接,忽略

SocketClosedUnexpectedlyError
错误是安全的。默认情况下,Heroku Data for Redis 配置为在 5 分钟不活动后断开连接

© www.soinside.com 2019 - 2024. All rights reserved.