缓存使用问题[数据库/ORM/服务器/HTTP]

发布于 2021-11-24 21:09:56 字数 543 浏览 861 评论 1

小弟不才,在了解完缓存的一些知识后对缓存的使用问题产生了一些疑问,该如何合理的使用缓存?

我现在知道的缓存有:数据库查询缓存(如Mysql查询缓存) - ORM框架缓存(如Hibernate的查询缓存/一二级缓存) - 服务器缓存(如memcached/redis) - HTTP缓存加速器或者服务器(如varnish/nginx)等。

他们都是一级一级下去的,各自都能理解,但是关于结合使用的问题还是有些不是很清楚。

1、数据库查询缓存和ORM框架缓存之间查找顺序是:ORM查询缓存 - 数据库查询缓存 - 数据库实体表吧?那么对于单应用服务/单数据库服务这两个查询缓存是不是有点冗余。

2、ORM的二级缓存有没有必要使用服务器缓存,我感觉本地缓存(ehcache)就够了,去memcached(远程)去拿一来可能没有本地快,二来感觉memcached之类的还是老老实实存些字典项权限啊什么之类的信息。(这点真是恕我愚见。)

3、各位平时的缓存策略是怎么样的?(这个才是重点。)

上述理解大言不惭如有偏颇请谅解~

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不再见 2021-11-25 05:53:15

基本多读少写的场景下为了提高响应必然需要缓存,而每层缓存只解决该层的响应问题,不能因为其他层有缓存就觉得变成冗余了。毕竟请求从应用层往数据层走的过程中,业务逻辑实际上是在逐步细化的,每个缓存对应的逻辑单元大小都不同,所以每层缓存解决的响应问题层面也不同。

而至于orm的二级缓存问题,我的看法是和你的业务逻辑与服务器部署有关,如果是单机前端服务器,而且服务器配置够好不会和业务逻辑争抢系统资源的话,使用本地缓存也可以。但是如果多机的话,还是得使用服务器缓存,毕竟缓存数据更新时需要在整个业务环境中更新,而本地缓存只能更新目前响应的这台服务器的缓存,其他服务器的本地缓存不更新的话会造成数据不一致和脏数据。

缓存策略就是多读少写且请求量大的数据都得加缓存!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文