如何为具有过多关联的数据架构构建Redis-MongoDB

时间:2019-04-17 07:01:56

标签: node.js mongodb express mongoose redis

我有一个具有10多个单独数据模型的应用程序。这个模型中的每一个都如此紧密地联系在一起。例如,有一个名为user的模型,该模型与其他数据模型(如帖子,评论,答复,连接等)相关联。我试图建立一个redis缓存系统,该系统将在每次查询时缓存数据。因此,请考虑这种情况,即帖子被否决,当该查询发生时,我将必须更新与该查询相关联的所有模型。

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

1 个答案:

答案 0 :(得分:1)

这是一个非常广泛的问题。我不知道您的数据库架构和那些实体关系是什么样的。但是我没有什么建议,希望对您的数据结构有指导意义。

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

诸如POST:345USER:23COMMENT:567之类的东西。

不要将所有内容存储在Redis中 维护缓存更加困难。仅存储您要更频繁访问的数据,如果从缓存中提供数据,这确实会产生影响。例如,存储用户配置文件将改善all post responsescomment responsesconnection lists等,因为它们全部将具有用户对象,而您将对其进行缓存。

直接在Redis中增加统计 点赞和评论计数值可以直接在Redis中incrementdecrement

在更新时使缓存无效 更新实体时,请勿更新其缓存。只需将其从缓存中删除,下一个get调用将缓存更新的数据。那只是为了简化代码。