【问题标题】:Why does Redis (Nodejs) automatically updates its cache after new item has been added to database?为什么 Redis (Nodejs) 在将新项目添加到数据库后会自动更新其缓存?
【发布时间】:2019-09-22 08:54:17
【问题描述】:

我想玩 Redis,所以我写了一个简单的端点来获取博客,很快就遇到了“甜蜜的问题”,因为代码确实有效,但我不知道为什么。

这个想法是在初始请求后将博客存储在缓存中,这符合预期,但是,据我了解,我应该在添加新博客后遇到问题,但我没有。我将发布代码以获得更直观的解释。

client.get = util.promisify(client.get);

    const cachedBlogs = await client.get(req.user.id);

    if (cachedBlogs) {
      return res.send(JSON.parse(cachedBlogs));
    }

    const blogs = await Blog.find({ _user: req.user.id });
    res.send(blogs);
    client.set(req.user.id, JSON.stringify(blogs));

据我了解,在我发布新博客之前缓存应该没问题,因为在那种情况下cachedBlogs 也等于 true,但我只会返回以前版本的缓存,因为我从未设法将新博客存储到缓存。问题是我在添加新博客后立即在缓存中看到了新博客,但我不知道为什么,因为如果缓存不为空,它总是以if statement 终止。

所以更准确的问题是,考虑到这段代码,redis 如何将新数据存储到缓存中?

【问题讨论】:

  • 也许它根本不缓存? (不确定问题是什么,虽然从未使用过 redis)
  • 确实如此,因为我可以检查我是从缓存中检索数据还是从查询数据库中检索数据
  • 嘿,我认为如果您检查处理发布新博客的代码部分,您应该能够知道发生了什么。检查发布新博客的方法是否调用了client.set方法。

标签: javascript node.js caching redis


【解决方案1】:

首先,我认为自动更新是不可能的。

所以,你可以添加更多关于 redis 和 db 的日志;或者你可以调试你的代码。你会发现你的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 2016-05-03
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    相关资源
    最近更新 更多