首页访问量大的情况下,做一级、二级缓存策略以及一些使用规则

作者: admin 分类: 规则原理 发布时间: 2018-08-13 18:01  阅读: 402 views

一、缓存执行策略的设计思路

一方面通过一级、二级缓存的策略减少数据库层面的压力

一方面通过定时任务主动更新缓存,减少用户并发带来的查询压力

 

二、缓存使用规则

1. 例如首页等入口级别的页面,所有数据应该使用缓存。

因为访问量大,会对数据库查询带来一定压力。所以要减少IO的传输,磁盘的寻址时间等。

2. 采用一、二级缓存的策略。不同模块的数据根据应用情况采用的时长处理。

       如:

       一级、全局首页    300s

       二级、搜索热词    600s【热词跟新频率不高,可以长一点】

       二级、导航菜单    3600s【首页菜单固定后,一般不会变化,可以长一点】

       二级、列表数据       300s【列表类型数据,可能会更新快,可以短一点】

       。。。。

 

       时间一般设为最短时间的倍数,方便统一。

3. 定时任务中必须添加入口级别页面的调用。

       因为入口级别页面访问量大,当用户并发操作且缓存失效时,可能造成数据库的查询压力。定时自动更新缓存可以大大减少这种情况。

 

4. redis缓存 和 本地缓存的使用

       有查询列表的业务,且列表中的某些值需要通过id去其他库查询。根据实际应用场景+代码量做改动。

如:项目列表默认10条,首页还需要展示项目的其他属性【标签、城市等少量数据】,需要通过ID额外去查询其他表【为了不破坏原有SQL的执行效率等,不去修改原SQL语句】

步骤

  1. 先获取10条项目的id值,封装到String[]数组中
  2. 将其他属性的值一次性查出存到redis中,关联id为键。
  3. 通过调用jedis的方法 public List<String> mget(final String… keys)获取到键对应的值。放到本地缓存变量中。
  4. 循环最初的10条记录,根据关联id去本地缓存变量中去查询对应的值放到Vo对象中。

这样减少了次与服务器的交互,减少了时间。


   原创文章,转载请标明本文链接: 首页访问量大的情况下,做一级、二级缓存策略以及一些使用规则

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注