今天做到关于分页数据做缓存的问题。因为又要缓存分页数据,又要缓存内容总数,所以脑子有点乱。
下面是我研究了以后的BLL里面的代码,不知道方法可行不可行。
#region 获取分页数据 GetPageList(int pageIndex, int pageSize, out int rowCount) /// <summary> /// 获取分页数据 /// </summary> /// <param name="pageIndex"></param> /// <param name="pageSize"></param> /// <param name="rowCount"></param> /// <returns></returns> public List<ContentModel> GetPageList(int pageIndex, int pageSize, out int rowCount) {
//缓存key,用以区分每一页的数据 string key = KeysModel.cache_content_getpagelist_prefix + "pageIndex_" + pageIndex + "_pageSize_" + pageSize;
//这个为内容数量的缓存key string countkey = KeysModel.cache_content_count_prefix + "totalCount"; List<ContentModel> list = new List<ContentModel>(); if(CacheHelper.Get(key)!=null) {
//缓存中不为空就从缓存中获取 list = CacheHelper.Get(key) as List<ContentModel>; rowCount = Convert.ToInt32(CacheHelper.Get(countkey)); } else {
//缓存中没有就从数据库获取,并且存入缓存。 int count; list = dal.GetPageList(pageIndex, pageSize, out count); rowCount = count; CacheHelper.Set(key, list, DateTime.Now.AddHours(3)); CacheHelper.Set(countkey, count, DateTime.Now.AddHours(3)); } return list; } #endregion
各位大神有没有更好的方法?