簡體   English   中英

為什么回調不適用於節點上的 Redis

[英]Why doesn't callback work for Redis on node

以下代碼適用於 redis 版本 3.1.2,但是當我將 redis 庫升級到 4.1.0 時,回調停止工作。 有一個 REDIS 服務器在 localhost 上運行,沒有密碼。 我正在使用節點 16 LTS。

'use strict'
import {createClient} from 'redis';
const redisClient = createClient();

redisClient.on('connect', function() {
    console.log('you are now connected');
});
redisClient.on('ready', function() {
    console.log('you are now ready');
});
redisClient.on('error', function(err) {
    console.log(`redis error: ${err}`)
});

// added for 4.1.0 because there is no autoconnect.
await redisClient.connect();

await redisClient.set("test","value", function(err, reply) {
    console.log('set complete');
});

當我在 Redis 客戶端 3.1.2 上運行它時,我在調用設置后得到“設置完成”。 在 Redis 客戶端 4.1.0 上,我什么也沒得到,就好像沒有調用回調一樣。 即使回調未觸發,該值也會在 REDIS 數據庫中設置。 我使用 redis cli 驗證了該值。 沒有錯誤消息。 我確實收到了連接和就緒事件消息。

我在這里錯過了什么? 我很確定這是我忽略的簡單事情。

節點 Redis 4.x 遵循 semver 約定,引入了許多重大更改。 其中之一是它使用承諾而不是回調。 您可以在https://github.com/redis/node-redis閱讀所有詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM