繁体   English   中英

为什么Redis(Nodejs)在将新项目添加到数据库后会自动更新其缓存?

[英]Why does Redis (Nodejs) automatically updates its cache after new item has been added to database?

我想玩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和db的日志; 或者你可以调试你的代码。 你会发现你的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM