我有一个具有10多个单独数据模型的应用程序。这个模型中的每一个都如此紧密地联系在一起。例如,有一个名为user的模型,该模型与其他数据模型(如帖子,评论,答复,连接等)相关联。我试图建立一个redis缓存系统,该系统将在每次查询时缓存数据。因此,请考虑这种情况,即帖子被否决,当该查询发生时,我将必须更新与该查询相关联的所有模型。
所以我的问题是如何构建我的Redis缓存系统,以便每次查询时都会更新所有相关数据。
答案 0 :(得分:1)
这是一个非常广泛的问题。我不知道您的数据库架构和那些实体关系是什么样的。但是我没有什么建议,希望对您的数据结构有指导意义。
分解实体
分别存储user, post, comment, reply
。例如,当您需要获取post
时,将post及其所有实体与redis分开,然后将它们合并以建立响应。
诸如POST:345
,USER:23
,COMMENT:567
之类的东西。
不要将所有内容存储在Redis中
维护缓存更加困难。仅存储您要更频繁访问的数据,如果从缓存中提供数据,这确实会产生影响。例如,存储用户配置文件将改善all post responses
,comment responses
,connection lists
等,因为它们全部将具有用户对象,而您将对其进行缓存。
直接在Redis中增加统计
点赞和评论计数值可以直接在Redis中increment
和decrement
。
在更新时使缓存无效
更新实体时,请勿更新其缓存。只需将其从缓存中删除,下一个get
调用将缓存更新的数据。那只是为了简化代码。