JAVA之编写简单缓存类

一、问题

         这几天写webservice提供接口时

                 问题:当前台通过条件调用接口查询数据时,查询的数据量太大。

                  为了减小前台的压力,又要减少后台对数据库的多次访问(个人理解),可以使用缓存类来解决该问题。


二、主要的设计逻辑如下图:

                      JAVA之编写简单缓存类_第1张图片


              

三、具体流程:

         将原来单纯的通过参数传入返回所有数据的逻辑方法改为(两个方法+缓存类)的方式    

(1) 缓存类:以Map形式存储,key(此处称为OutKey)为对应的时间字符串,value也是一个map

                                (该map的key称为inKey,将inKey设计为是对应的页码), 该map目的是将所有记录按

                                照指定的条数分段,将来用户获取时,可传入Outerkey和inKey,首先找到指定条件

                                查询出来的记录,再根据页码inkey找到对应的第几页的数据,然后给用户返回。    

                                 存入的细节具体如下图:                          JAVA之编写简单缓存类_第2张图片

  (2)方法一:根据条件获取查询记录总条数和缓存类对应数据的key值(该key为存入缓存Map时

                                  的时间字符串)

(3)方法二:根据key和页码(页码与内map里的key对应),这样即可找到某个条件查询数据下的第几页数                                     据。

四、缓存Map的定时清除

            如果不同的条件多次访问服务器,每次都将数据存入缓存Map,这样缓存Map就会越来越大,这样就需要定

             时删除功能,定时删除必须知道开始时间,前边存入缓存Map时的key即为对应开始时间,这样就简单多了

            具体如下:

JAVA之编写简单缓存类_第3张图片


五、犯的小问题

    (1)将如下方法的时间写成了获取当前时间值,哈哈,这样导致该TimerTask方法运行时是在两千年后.。。。。。。


       


 (2)注意缓存Map是随服务器关闭而内容消失的,而我,非要在调取第一个方法的时候,拿到key,然后关闭main              方法,再掉第二个方法,一直没有拿到值,而且还自我肯定了半天是TimerTask写错了。。

你可能感兴趣的:(JAVA之编写简单缓存类)