开发者社区> 问答> 正文

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

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

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

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

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

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

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

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

展开
收起
小旋风柴进 2016-03-11 11:08:36 2777 0
1 条回答
写回答
取消 提交回答
  • 基本多读少写的场景下为了提高响应必然需要缓存,而每层缓存只解决该层的响应问题,不能因为其他层有缓存就觉得变成冗余了。毕竟请求从应用层往数据层走的过程中,业务逻辑实际上是在逐步细化的,每个缓存对应的逻辑单元大小都不同,所以每层缓存解决的响应问题层面也不同。

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

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

    2019-07-17 18:58:43
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
如何运维千台以上游戏云服务器 立即下载
网站/服务器取证 实践与挑战 立即下载
ECS块储存产品全面解析 立即下载