JAVA之编写简单缓存类

一、问题

         这几天写webservice提供接口时

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

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


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

                      


              

三、具体流程:

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

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

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

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

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

                                 存入的细节具体如下图:                          

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

                                  的时间字符串)

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

四、缓存Map的定时清除

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

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

            具体如下:


五、犯的小问题

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


       


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

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

茁壮成长的凌大大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值