node.js - 如何为关联过多的数据模式构建 Redis - mongodb

标签 node.js mongodb express mongoose redis

我有一个包含 10 多个单独数据模型的应用程序。这个模型中的每一个都如此深刻地相互关联。例如,有一个名为用户的模型与其他数据模型相关联,如帖子、评论、回复、连接等。我正在尝试拥有一个 redis 缓存系统,该系统将在每次进行查询时缓存数据。所以考虑一下这个帖子被点赞的场景,当这个查询发生时,我将不得不更新所有以某种方式与这个查询相关联的模型。

所以我的问题是如何构建我的 redis 缓存系统,以便在每次进行查询时更新所有相关数据。

最佳答案

这是一个非常宽泛的问题。我不知道您的数据库模式和那些实体关系是什么样的。但我有一些建议,希望能指导您构建数据。

分解您的实体 分别存储user, post, comment, reply。例如,当您需要获取 post 时,从 redis 中单独获取 post 及其所有实体,然后将它们合并以构建响应。

类似于 POST:345USER:23COMMENT:567

不要把所有东西都存储在redis中 维护缓存要困难得多。仅存储您经常访问的数据,如果您从缓存中提供这些数据,它们将真正产生影响。例如,存储用户配置文件将改进所有帖子响应评论响应连接列表等,因为它们都有用户对象,而您将拥有它们被缓存。

直接在redis中增加统计数据 点赞数和评论数可以直接在redis中自增自减

更新时缓存无效 更新实体时,不要更新其缓存。只需将其从缓存中删除,下一个 get 调用就会缓存更新的数据。这只是为了简化代码。

关于node.js - 如何为关联过多的数据模式构建 Redis - mongodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55721703/

相关文章:

node.js - Node ,针对特定文件类型的不同缓存规则

node.js - 为什么省略行 app.use(express.static(__dirname, 'public' )) 会阻止我的 html 页面加载 css 文件?

javascript - 如何保持 PostgreSQL 连接打开?

mongodb - mongodb 备份是自动生成的吗?

node.js - “w”不被识别为内部或外部命令、可操作程序或批处理文件

javascript - 如何使用变量args调用类方法

javascript - 使用 mongoose 中现有集合的一部分

java - spring-boot 2.1.0 mongo - CodecConfigurationException : Can't find a codec for class java. time.Year

javascript - 为什么我的自定义验证功能不起作用?

node.js - 使用 Expressjs 的 Handlebars registerHelper 服务器端