假如分别对如下方法进行了缓存:
get_article_ids()
// 获取文章id集合
get_user_artical_ids()
// 获取用户文章id集合
此时,如果再实现一个 delete_article(aid)
方法,用于删掉一篇 article , 则需要在该方法内去删掉或更新上述两个方法的缓存,否则数据就不一致了。
我的问题是:
假如此时还需要实现一个 get_favorite_article_ids()
方法, 就需要在 delete_article
里再删除一个缓存,我觉得这样很不合理,也违背了 OCP 原则。 假如实现get_favorite_article_ids
的这个人,遗漏了修改 delete_article
方法,数据则出错了。
请问大家有什么更合理的方式来实现类似情况的缓存更新吗? 谢谢。
1
hap OP 注:我已查了不少 Cache 的资料,但都查不到类似的一些方法。 有了解的人也可以扔点关键词给我,谢谢。
|
2
hcymk2 2017-04-17 00:02:21 +08:00
在这个场景下 id 集合缓存意义在哪里?
|
3
hap OP @hcymk2
对 id 列表进行缓存,同时也会对 id 对应的 object 进行缓存。 delete 、 update 操作肯定是远于 get 操作的。 这样的缓存肯定是有必要的。 上述只是举一个例子用来说明类似的情况。 |
4
hap OP 上面少了一个字: `delete 、 update 操作肯定是远少于 get 操作的。 `
|
5
hcymk2 2017-04-17 00:55:24 +08:00
一个 ID 是可以这样说,多了你就会发现你的那个集合缓存命中率会很不好看。
明明是个缓存,非得当数据库用。 |
6
jarlyyn 2017-04-17 00:59:37 +08:00
频率低就 flush 整个 cache,一了百了……
|