[英]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.