使 ORM 缓存失效的最佳策略是什么?
我们的 ORM 与缓存很好地结合在一起,所以我们所有的对象获取都被缓存了。目前,我们在插入/更新/删除对象之前和之后使对象无效。你的经验是什么?
We have our ORM pretty nicely coupled with cache, so all our object gets are cached. Currently we invalidate our objects before and after our insert/update/delete of our object. What's your experience?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
为什么在 i/u/d 之前和之后?
如果您不想直接更新缓存,那么假设您在每次缓存未命中时将其加载到缓存中,那么在 i/u/d 之后就足以使对象无效。如果您的对象空间足够大,以至于您的缓存可能会占用太多内存,那么您还需要一些过期机制(X 分钟后或 X 分钟后不被访问而无效)。
或者您可以选择 LRU(最近最少使用),但如果您的 ORM 本身不支持它,那么您自己实现起来并不容易。
Why before AND after i/u/d?
If you don't want to update your cache directly then it's enough to invalidate an object after i/u/d assuming you load it into cache on every cache miss. If your object space is big enough that your cache could use up too much memory, you'll need some expiration mechanism too (invalidate after X minutes or after X minutes w/o being accessed).
Or you could go for LRU (Least Recently used) but this is not easy to implement on your own if your ORM doesn't support it natively.