把redis放在DATA层 作为一种数据源

作者:Lose.zhang  发布日期:2012-05-19 10:19:38

一 一个Repository数据库操作基类,提供了通用的操作属性和方法
namespace Data
{
    public abstract class RepositoryBase
    {
        protected static RedisClient_SortedSet redisClient = new RedisClient_SortedSet();
        public static DataClasses1DataContext db = new DataClasses1DataContext();
    }
}二 接口定义操作规范
namespace Data
{
    /// <summary>
    /// 接口规范
    /// </summary>
    /// <typeparam name="TEntity"></typeparam>
    public interface IRepository<TEntity> where TEntity : class
    {
        IQueryable<TEntity> GetModel();
    }
}三 提供不同的实现接口的方式
namespace Data.Sql //使用SQL实现查询
{
    public class PersonRepository : RepositoryBase, IRepository<Res_Item>
    {
        #region IRepository<Res_Item> 成员

        public IQueryable<Res_Item> GetModel()
        {
            return db.Res_Item.Select(i => new Res_Item_Ext
            {
                ID = i.ID,
                Name = i.Name,
                PackageTime = i.PackageTime,
            });
        }

        #endregion
    }
}

namespace Data.Redis //使用Redis实现查询
{
    public class PersonRepository : RepositoryBase, IRepository<Res_Item>
    {

        #region IRepository<Res_Item> 成¨|员?à

        public IQueryable<Res_Item> GetModel()
        {
            return redisClient.GetList("Res_Item").Cast<Res_Item>().ToList().AsQueryable();
        }

        #endregion
    }
}四 实体类,由于要被序列化,所以redis需要你的实体类标有Serializable特性
    [Serializable]
    public partial class Res_Item { }
    [Serializable]
    public class Res_Item_Ext : Res_Item
    {

    }五 如何在BLL层去调用你的redis数据库
   #region 从数据库中建立一个redis缓存对象

            try
            {
                rds.SelectDB(2);
                new Data.Sql.PersonRepository().GetModel().Take(10).ToList().ForEach(i =>
                {
                    rds.Add("Res_Item", i.ID, i);
 
                });
                rds.BackgroundSave();//异步序列化到磁盘
            }
            catch (Exception)
            {

                throw;
            }
            #endregion

            #region 从redis文件读取数据
            new Data.Redis.PersonRepository().GetModel().ToList().ForEach(i => Console.WriteLine(i.ID + i.Name + i.PackageTime));
  #endregion

 

延伸阅读:

Tag标签: 把redis   DATA层  
  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规