JavaRedis学习笔记~把redis放在DATA层,作为1种数据源,作者以为更合理,也更切合作者的面向对象原则

归来目录

redis是三个key-value存款和储蓄系统。和Memcached类似,它协理存款和储蓄的value类型相对越多,包罗string(字符串)、list(链表)、set(集合)、zset(sorted
set
–有序集合)和hash(哈希类型)。那几个数据类型都协理push/pop、add/remove及取交集并集和差集及更增进的操作,而且那一个操作都以原子性的。在此基础上,redis支持各类分裂方法的排序。与memcached壹样,为了保证成效,数据都是缓存在内部存款和储蓄器中。差别的是redis会周期性的把立异的数码写入磁盘恐怕把修改操作写入追加的笔录文件,并且在此基础上贯彻了master-slave(主从)同步。
Redis 是1个高质量的key-value数据库。
redis的出现,极大程度补偿了memcached这类key/value存款和储蓄的贫乏,在部
分场地能够对关周到据库起到很好的补充成效。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很便利。[1]
Redis协理宗旨同步。数据能够从主服务器向自由数量的从服务器上同台,从服务器能够是涉嫌别的从服务器的主服务器。那使得Redis可进行单层树复制。存盘能够顺便的对数据实行写操作。由于完全完结了宣告/订阅机制,使得从数据库在任哪里方共同树时,可订阅一个频段并接收主服务器完整的音讯公布记录。同步对读取操作的可扩充性和数目冗余很有协助。
redis的官网地址,卓殊好记,是redis.io。(特意查了一下,域名后缀io属于国家域名,是british
Indian Ocean territory,即英属太平洋领地)

壹 四个Repository数据库操作基类,提供了通用的操作属性和方法

1 namespace Data
2 {
3     public abstract class RepositoryBase
4     {
5         protected static RedisClient_SortedSet redisClient = new RedisClient_SortedSet();
6         public static DataClasses1DataContext db = new DataClasses1DataContext();
7     }
8 }

二 接口定义操作规范

 1 namespace Data
 2 {
 3     /// <summary>
 4     /// 接口规范
 5     /// </summary>
 6     /// <typeparam name="TEntity"></typeparam>
 7     public interface IRepository<TEntity> where TEntity : class
 8     {
 9         IQueryable<TEntity> GetModel();
10     }
11 }

叁 提供不一致的兑现接口的方法

 1 namespace Data.Sql //使用SQL实现查询
 2 {
 3     public class PersonRepository : RepositoryBase, IRepository<Res_Item>
 4     {
 5         #region IRepository<Res_Item> 成员
 6 
 7         public IQueryable<Res_Item> GetModel()
 8         {
 9             return db.Res_Item.Select(i => new Res_Item_Ext
10             {
11                 ID = i.ID,
12                 Name = i.Name,
13                 PackageTime = i.PackageTime,
14             });
15         }
16 
17         #endregion
18     }
19 }
20 
21 namespace Data.Redis //使用Redis实现查询
22 {
23     public class PersonRepository : RepositoryBase, IRepository<Res_Item>
24     {
25 
26         #region IRepository<Res_Item> 成¨|员?à
27 
28         public IQueryable<Res_Item> GetModel()
29         {
30             return redisClient.GetList("Res_Item").Cast<Res_Item>().ToList().AsQueryable();
31         }
32 
33         #endregion
34     }
35 }

肆 实体类,由于要被体系化,所以redis须要您的实业类标有Serializable个性

1    [Serializable]
2     public partial class Res_Item { }
3     [Serializable]
4     public class Res_Item_Ext : Res_Item
5     {
6 
7     }

 

伍 如何在BLL层去调用你的redis数据库

 1  #region 从数据库中建立一个redis缓存对象
 2 
 3             try
 4             {
 5                 rds.SelectDB(2);
 6                 new Data.Sql.PersonRepository().GetModel().Take(10).ToList().ForEach(i =>
 7                 {
 8                     rds.Add("Res_Item", i.ID, i);
 9  
10                 });
11                 rds.BackgroundSave();//异步序列化到磁盘
12             }
13             catch (Exception)
14             {
15 
16                 throw;
17             }
18             #endregion
19 
20             #region
21             new Data.Redis.PersonRepository().GetModel().ToList().ForEach(i => Console.WriteLine(i.ID + i.Name + i.PackageTime));
22   #endregion

 

回来目录

相关文章