[英]not able to connect to redis in nodejs
首先,細節:
節點版本:v16
使用 redislabs 雲(v6.2.3)
npm package redis 版本 4.0.3
這是代碼...
const redis = require("redis");
require("dotenv").config();
const client = redis.createClient({
host: process.env.REDIS_URI,
port: process.env.REDIS_PORT,
password: process.env.REDIS_PASSWORD
});
client.on("connect", () => {
console.log("Connected to our redis instance!");
client.set("iAmAKey", "Value");
});
在運行時它不會 output 任何東西:( 並且只是在一段時間后退出。
任何幫助將不勝感激。 謝謝!
好吧,我現在讓它工作了。 將此添加為任何未來有相同問題的流浪者的參考。
所以社區建議改用 URL。
const redis = require("redis");
require("dotenv").config();
(async () => {
const client = redis.createClient({
url: `redis://default:${process.env.REDIS_PASSWORD}@${process.env.REDIS_URI}:${process.env.REDIS_PORT}`,
});
client.on("error", (err) => console.log("Redis Client Error", err));
await client.connect();
await client.set("key", "value");
console.log("Redis Connected!")
const value = await client.get("key");
console.log(value);
})();
這是供將來參考的問題:無法連接到 redis-labs 雲 redis 服務器 #1892
對.createClient
的調用會創建一個客戶端,但實際上並未連接到 Redis。 所以連接事件永遠不會觸發。 節點 Redis 4.x 支持承諾,所以你真的根本不需要回調。 您可以通過以下方式完成相同的操作:
const redis = require("redis");
const client = redis.createClient();
await client.connect();
await client.set('foo', 'bar');
let foo = client.get('foo');
請注意,為了簡潔起見,我在示例代碼中刪除了dotenv
的使用,只是讓它連接到localhost
上的 Redis。
@Amresh 的附加信息這對我有用:
url: `redis://${process.env.REDIS_PASSWORD}@${process.env.REDIS_URI}:${process.env.REDIS_PORT}`,
沒有默認字。
我在節點 14 中使用 Redis ^4.3.1
遇到了同樣的問題。 將版本更改為^3.1.2
對我有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.