簡體   English   中英

Redis:錯誤表中的數據錯誤

[英]Redis: Wrong data in wrong tables

我正在嘗試解決一個已經困擾我一個月的問題

我正在使用Node.js和Redis擴展應用程序的后端,由於我們的結構,我們必須將數據從一個 Redis 表傳輸到另一個

我們在幾秒鍾內收到了很多請求,並做出了很多響應,無論我做了多少嘗試, 我都無法阻止數據混雜 假設我們有一個“ teacherID” ,必須將其存儲在Redis表#2中 還有一個“ studentID” ,必須存儲在Redis表#4中 無論我嘗試了什么(我已經多次檢查代碼),都無法阻止TeacherID進入studentID 我嘗試過的最后一個技巧實際上是在每次選擇時都放置回調。 ;

redisClient.select(4, function(err) {
  if(err)
    console.log("You could not select the table. Function will be aborted");
  else {
    // Proceed with the logic
  }
});

我不能簡單地阻止這種混亂的原因可能是什么? 讓我抓狂的一個細節是,它在本地和在線上都非常有效,但是每當有多個請求到達服務器時,它就會變得混亂。 有什么建議可以防止此錯誤?

對於您是否必須“將數據從一個Redis表傳輸到另一個表”的說法,我不確定。 通讀示例,您似乎可以簡單地擁有兩個可寫入不同數據庫(稱為“表”)的redis客戶端。

它看起來類似於:

var redis = require("redis");
var client1 = redis.createClient(6379, '127.0.0.1');
var client2 = redis.createClient(6379, '127.0.0.1');

client1.select(2, function(err){
    console.log('client 1 is using database 2');
});

client2.select(4, function(err){
    console.log('client 2 is using database 4');
});

然后,無論您的讀/寫邏輯在哪里,您都可以使用適當的客戶端:

client1.set("someKey", "teacherID", function(err){
    // ...
});

client2.set("someKey", "studentID", function(err){
    // ...
});

顯然,您可以將上述內容封裝到帶有回調的函數中,嵌套操作,使用一些異步庫等,使其能夠執行所需的任何操作。 如果需要將值從數據庫2傳輸到數據庫4,則可以執行一個簡單的client1.get()client2.set()

暫無
暫無

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

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