# C# 学习记录 用缓存来保存临时数据以降低数据库访问频率

C# 学习记录 用缓存来保存临时数据以降低数据库访问频率

如果用户请求接口时需要查询数据库 , 如果很多用户同时请求接口的话就不能每个用户来请求接口都去查询数据库

我的解决思路是 每过一段时间(比如5分钟)请求一次数据库 , 每次请求完成数据库把请求得到的数据缓存起来

新建一个类(比如 我用的AppConfig类 ) 在类里面新加这两行 一个用来存数据库读取出来的数据(model),另一个用来记录时间

public static List cacheList = new List();
public static DateTime cacheTime = new DateTime();

然后 在需要返回数据的接口最开始的地方 , 先获取当前时间

DateTime nowTime = DateTime.UtcNow.AddHours(8);

然后判断缓存的数据是否需要更新 (这个APPConfig类上面已经写了),
判断是否是第一次进来(AppConfig.cacheTime.ToString().Equals(“01/01/0001 00:00:00”)) ,
或者当前时间是否比缓存记录的时间大(DateTime.Compare(nowTime,AppConfig.cacheTime)>0)
如果是第一次进来 就去数据库查询数据 , 查询之后 把当前时间加个5分钟 (我写的是5分钟更新一次 )记录到缓存里面 ,数据也同时记录到缓存里面 (cacheList是从数据库读取的数据列表) ,new出来的AppConfig.cacheTime这个时间需要自己手动先测试一下 我在不同电脑上得到了两种结果 很奇怪 另一种结果 (“0001/1/1 0:00:00”) 当然也可以自己指定.ToString(“yyyy/MM/dd HH:mm:ss”)

if (AppConfig.cacheTime.ToString().Equals(“01/01/0001 00:00:00”) || AppConfig.cacheTime.ToString().Equals(“0001/1/1 0:00:00”)|| DateTime.Compare(nowTime,AppConfig.cacheTime)>0) {

//开始执行查询的操作

AppConfig.cacheTime = nowTime.AddMinutes(5); //记录下次查询的时间

AppConfig.cacheList = cacheList;//把查询到的数据(cacheList)放到缓存里面

}else{

//时间距离上次查询没有超过5分钟 , 把缓存数据返回出去 不再执行查询数据库的操作

// 返回缓存的数据 AppConfig.cacheList
}

2019年7月8日12:04:08
简书同步地址 :https://www.jianshu.com/p/94bf42231a7c

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

若风华浊世间

欢迎指点 ! (*^_^*)

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

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

打赏作者

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

抵扣说明:

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

余额充值