List集合写入缓存,我已经简单的写了一个方法了。各位能不能提点意见改善一下,或者是有更加优化的方法。
我想要更贴近需求的方法,网站想要调用一个随身携带设备的数据,然后设备商给出的接口只能根据时间查每一天的数据。
那我就想一次性查出一个月或者几个月(这个需要看具体需求)的数据,然后存入缓存再进行调用。
开始我想存xml,但是每一个设备都会有一个对应的code,每个code每一天都会有好多条数据,数据量有点多。
所以我就想存一个本地的缓存,当用户在我们网站查的时候,先需要输入他的设备code,然后一次调出他一个月的数据量存下来。
简单的写了一下,大家给点意见吧
protected void Button8_Click(object sender, EventArgs e)
{
string code = txt.Text;
List<Summarys> list = new List<Summarys>();
for (int i = 1; i <= 30; i++)
{
Summarys model = EbApi.getsummarys(h.auth_key, DateTime.Now.AddDays(-i), code);
list.Add(model);
}
System.Web.Caching.Cache cache = System.Web.HttpContext.Current.Cache;
if (cache["list_"+code]!=null)
{
cache.Remove("list_"+code);
}
cache.Insert("list_" + code, list, null, DateTime.Now.AddHours(2), System.Web.Caching.Cache.NoSlidingExpiration);
}
------解决方案--------------------不用一次性查出一个月或者几个月
需要查哪天的数据,就先去缓存找,如果没有再查设备,存入缓存
------解决方案--------------------可以做缓存表,将数据存入里面,记录存储时间,每次只是根据时间查询而已
------解决方案--------------------每天都去设备商那把最新数据查询出来 存到自己的数据库中 以后查询就方便啦....
------解决方案--------------------代码本身没什么好说的,就是一些缓存操作而已。
你可以给出一个配置文件,文件配置中存放一个值来决定取多少天的数据,然后服务每天根据这个配置跑取数据程序。至于存在哪,我觉得存数据库,xml或其他缓存都差不多,数据压力无非是在数据库服务器上还是逻辑服务器上的问题
------解决方案--------------------取出数据,然后参考linq中的take方法。
另外,移动端可以将数据对象序列化成本地bin文件,web的直接cache就好了,cache有时效性和优先级的,看看msdn就没什么问题的