Redis学习笔记~把redis放在DATA层,作为一如既往种植数据源,我觉着再合理,也再度符合自身之面向对象原则

归来目录

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对还多,包括string(字符串)、list(链表)、set(集合)、zset(sorted
set
–有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取得交集并集和差集及重新丰富的操作,而且这些操作都是原子性的。在是基础及,redis支持各种不同方式的排序。与memcached一样,为了保效率,数据还是苏存在内存中。区别的凡redis会周期性的拿创新的数据形容副磁盘或者将修改操作写副追加的记录文件,并且以这个基础及实现了master-slave(主从)同步。
Redis 是一个胜似性能的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

 

回目录