简单缓存及缓存表应用入门

业务需求:源数据库比较庞大,一个简单查询都要几秒到十几秒。现在需要统计某日的部分数据,比如当天有多少用户登录之类,需要按天统计,还需要有个功能要合计。如果一天天去查询,查一次耗费的时间都很长,不用缓存的话,下次再查需要消耗更长时间。

分析与解决:除了当天外,任何一天的数据统计其实都是稳定不变的,因而我们可以考虑把每天统计出来的数据记录起来,下回再查询时便直接从记录里去读取,这里我们用到缓存表。即建一张表,用于记录这些数据(每天查询获得的统计数据)。

一般情况下有缓存表已经可以解决以上的需求了,起码二次查询的速度已经提高很多了。

不过缓存表是存在硬盘里的,想要更快读取数据自然是从内存读取。便要用到缓存。缓存其实可以是自己写的一个类,可以用Dictionary类型来写,该类有add,remove,count,clear等方法。我们可以把数据存在这个类中,就跟把数据存入model的一个道理。因此只要程序还在运行,缓存的数据你不调用方法去清空,它就不会丢,但程序一重启,则缓存就清空了。

业务逻辑:

if(查询日期>=今天){

去源数据库读取数据//当天的数据是动态变化的,不该记录到缓存表或存入缓存

}else{

优先从缓存读取数据//最快

if(缓存有对应日期的key)//根据业务需求决定key是日期或其他参数

{读取缓存数据}

else{

若缓存无数据,尝试查询缓存表

if(缓存表有数据){

读取缓存表数据

}else{

缓存表无数据,则去源数据库读数据;

将新数据存入缓存;

将新数据插入缓存表;  }


返回读取的数据

}


PS:本文是做缓存的一种方式,缓存的最终目的是提高访问效率,节省服务器资源,我们可以利用各种方式将固定的数据存在合理的位置,在需要的时候从相应位置读取,并在逻辑上进行处理,保证数据不发生异常。所以缓存的方式是有很多种的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值