将 Redis Cloud 与 Node.js 和 MongoDB 后端集成时出现连接错误

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

我第一次使用 Redis,用 Node.js 后端构建缓存层。我正在使用Redis云。我按照文档设置了云帐户并使用此代码连接到云。

import {createClient} from 'redis';

// Setup Redis client
const redisClient = createClient({
    password: process.env.REDIS_PASSWORD,
    socket: {
        host: process.env.REDIS_HOST,
        port: process.env.REDIS_PORT
    }
})

然后在index.js中,

await redisClient.connect()
            .then(() => console.log("CONNECTED TO REDIS"))
            .catch((e) => console.error("Redis connection error: ", e))

我还在我的 Windows 机器上使用 wsl2 安装了 Redis。问题是我必须使用

redis-server
命令在我的 redis-cli 上启动 Redis 本地服务器,以在 120.0.0.0 / 6379 端口上启动它,有点像我启动 Node.js 服务器的方式。如果我不在本地启动 redis 服务器,我会收到
Redis connection error
消息。

我不明白的是,如果我连接到Redis Cloud,为什么我需要在本地运行它?另外,我是否需要在某个地方(例如 Node.js)托管我的 Redis 服务器以进行生产?

另外,如果我在 Redis 中设置键值并设置过期时间,

const key = `${userId}`

const data = await redisClient.get(key)
if (data) {
    return res.status(200).json({user: JSON.parse(data)});
}

const user = await User.findById(userId)
await redisClient.setEx(cacheKey, 10, JSON.stringify(user))

键值在过期时间内存储在我的本地 Redis 数据库中,但不在我的 Redis 云数据库中。再说一次,为什么会这样呢?我想从我的 Redis Cloud DB 中设置和获取所有内容。

我是第一次实现 Redis,所以任何帮助或建议以及如何改进代码都会非常有帮助。

node.js redis node-redis
1个回答
0
投票
  1. 如果您使用 Redis 云,则不需要在本地系统上安装任何 Redis 实例
  2. 检查如何正确创建 Redis 客户端(您可能已经使用 TLS 设置了它,在这种情况下您需要提供 ca.crt、redis.key 和 redis.crt)
  3. 尝试像这样连接到 Redis 云“redis-cli --tls --cacert /certs/ca.crt --key /certs/redis.key --cert /certs/redis.crt -h -p 6680 (或6679 基于您的设置)”请记住,此命令只是您的示例
  4. 首先检查你与redis的连接,然后将其引入到你的应用程序中

p.s:我列出了在日常使用中可能派上用场的 redis 操作列表,可能对您有用 https://github.com/xogoodnow/Redis_Cluster/blob/main/Administarion_Guide/Redis_Operations_Guide.md

祝你好运

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