数据量较大时,把数据放入缓存中的处理办法

public List<DataSource> TrafficLog
{
get
{
List<DataSource> result = new List<DataSource>();
if (Session["TrafficLog"] == null || (DateTime.Now - (DateTime)Session["Refunsh"]).Minutes > 10)
{
//默认查询当前月的数据       
var monthNow = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM"));
int user_state = (int)User_StateEnum.No;//有效用户




var trafficLog = from a in DataHelper.Set<T_WebAppTrafficLog>()
join b in DataHelper.Set<T_User>()
on a.OwnerId equals b.User_ID
where b.CompanyId == LoginUserCompanyID //当前登录人的公司
&& a.CreateTime >= monthNow            //当前月
&& b.State == user_state
group a by new { a.OwnerId, b.User_Name } into c
select new DataSource
{
User_Name = c.Key.User_Name,
Data3G = c.Sum(p => p.G3_Increment),
};


// 总共个数
var appCount = trafficLog.Count();
List<DataSource> chart_source = new List<DataSource>();
if (appCount > 0)  //是否显示图表
{
if (appCount > topView)
{
appCount = topView;
}


var aa = trafficLog.Select(p => new DataSource()
{
User_Name = p.User_Name,
Data3G = p.Data3G,
}).ToList().OrderByDescending(p => p.Data3G).Take(appCount);


chart_source = aa.Select(p => new DataSource
{
User_Name = p.User_Name,
Data3G = Decimal.Round(Convert.ToDecimal(p.Data3G), 2),
}).ToList();
}


Session["TrafficLog"] = chart_source.ToList();
Session["Refunsh"] = DateTime.Now;  //刷新目录时间间隔为10分钟
}
result = Session["TrafficLog"] as List<DataSource>;
return result;
}
set
{
Session["TrafficLog"] = value;
}
}




每隔10分钟缓存一次,不需要每次加载的时候都从数据库中抓取~~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值