繁体   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