>搭建Redis服务端,并用客户端连接
  >封装缓存父类,定义Get,Set等常用方法
  >定义RedisCache缓存类,执行Redis的Get,Set方法
  >构造出缓存工厂调用方法

  下面一步一个脚印的来分享:
  >搭建Redis服务端,并用客户端连接
  首先,咋们去这个地址下载安装文件https://github.com/dmajkic/redis/downloads,我这里的版本是:redis-2.4.5-win32-win64里面有32位和64位的执行文件,我这里服务器是64位的下面给出截图和用到部分程序的说明:

  现在,咋们直接可以用鼠标双击redis-server.exe这个应用程序,这样打开了redis服务窗体(您也可以下载一个windows服务承载器,把redis服务运行在windows的服务中,不用担心每次关闭redis服务黑色窗体后无法访问redis了),运行起来是这样:

  有红色框的信息表示成功了,这里redis服务监听的端口默认是6379,要修改端口或者更多的配置信息请找到redis.conf配置文件,具体配置信息介绍可以来这里http://www.shouce.ren/api/view/a/6231
  再来,打开客户端连接服务端,咋们退到64bit文件夹的目录中,鼠标移到64bit文件夹上并且安装Shift键,同时点击鼠标的右键,选中"在此处打开命令窗口"这样快速进入到了该文件夹的cmd命令窗口中(当然不同的操作系统不同,这里演示的是windows的操作;还有其他进入的方式这里不做介绍,因为个人感觉这是快的);然后,在命令窗口中录入redis-cli.exe -h localhost -p 6379回车来访问服务端,效果图:

  再来看下服务端窗体截图:

  没错这样客户端连接上服务端了,可以简单在客户端执行下set,get命令:

  如果是客户端要访问远程的redis服务端,只需要把localhost换成可访问的ip行了如果还需要密码等更多配置请去上面的那个地址链接;
  >封装缓存父类,定义Get,Set等常用方法
  先来,上父类的代码:
  1 public class BaseCache : IDisposable
  2     {
  3         protected string def_ip = string.Empty;
  4         protected int def_port = 0;
  5         protected string def_password = string.Empty;
  6
  7         public BaseCache()
  8         {
  9
  10         }
  11
  12         public virtual void InitCache(string ip = "", int port = 0, string password = "")
  13         {
  14
  15         }
  16
  17         public virtual bool SetCache<T>(string key, T t, int timeOutMinute = 10) where T : class,new()
  18         {
  19
  20             return false;
  21         }
  22
  23         public virtual T GetCache<T>(string key) where T : class,new()
  24         {
  25
  26             return default(T);
  27         }
  28
  29         public virtual bool Remove(string key)
  30         {
  31
  32             return false;
  33         }
  34
  35         public virtual bool FlushAll()
  36         {
  37
  38             return false;
  39         }
  40
  41         public virtual bool Any(string key)
  42         {
  43
  44             return false;
  45         }
  46
  47         public virtual void Dispose(bool isfalse)
  48         {
  49
  50             if (isfalse)
  51             {
  52
  53
  54             }
  55         }
  56
  57         //手动释放
  58         public void Dispose()
  59         {
  60
  61             this.Dispose(true);
  62             //不自动释放
  63             GC.SuppressFinalize(this);
  64         }
  65     }
  这里定义的方法没有太多的注释,更多的意思我想看方法名称明白了,这个父类主要实现了IDisposable,实现的Dispose()中主要用来释放资源并且自定义了一个public virtual void Dispose(bool isfalse)方法,这里面有一句是GC.SuppressFinalize(this);按照官网介绍的意思是阻塞自动释放资源,其他的没有什么了,继续看下面的
  >定义RedisCache缓存类,执行Redis的Get,Set方法
  首先,咋们分别定义类RedisCache,MemcachedCache(这里暂未实现对memcache缓存的操作),并且继承BaseCache,重写Set,Get方法如下代码:
  1 /// <summary>
  2     /// Redis缓存
  3     /// </summary>
  4     public class RedisCache : BaseCache
  5     {
  6         public RedisClient redis = null;
  7
  8         public RedisCache()
  9         {
  10
  11             //这里去读取默认配置文件数据
  12             def_ip = "172.0.0.1";
  13             def_port = 6379;
  14             def_password = "";
  15         }
  16
  17         #region Redis缓存
  18
  19         public override void InitCache(string ip = "", int port = 0, string password = "")
  20         {
  21
  22             if (redis == null)
  23             {
  24                 ip = string.IsNullOrEmpty(ip) ? def_ip : ip;
  25                 port = port == 0 ? def_port : port;
  26                 password = string.IsNullOrEmpty(password) ? def_password : password;
  27
  28                 redis = new RedisClient(ip, port, password);
  29             }
  30         }
  31
  32         public override bool SetCache<T>(string key, T t, int timeOutMinute = 10)
  33         {
  34
  35             var isfalse = false;
  36
  37             try
  38             {
  39                 if (string.IsNullOrEmpty(key)) { return isfalse; }
  40
  41                 InitCache();
  42                 isfalse = redis.Set<T>(key, t, TimeSpan.FromMinutes(timeOutMinute));
  43             }
  44             catch (Exception ex)
  45             {
  46             }
  47             finally { this.Dispose(); }
  48             return isfalse;
  49         }
  50
  51         public override T GetCache<T>(string key)
  52         {
  53             var t = default(T);
  54             try
  55             {
  56                 if (string.IsNullOrEmpty(key)) { return t; }
  57
  58                 InitCache();
  59                 t = redis.Get<T>(key);
  60             }
  61             catch (Exception ex)
  62             {
  63             }
  64             finally { this.Dispose(); }
  65             return t;
  66         }
  67
  68         public override bool Remove(string key)
  69         {
  70             var isfalse = false;
  71             try
  72             {
  73                 if (string.IsNullOrEmpty(key)) { return isfalse; }
  74
  75                 InitCache();
  76                 isfalse = redis.Remove(key);
  77             }
  78             catch (Exception ex)
  79             {
  80             }
  81             finally { this.Dispose(); }
  82             return isfalse;
  83         }
  84
  85         public override void Dispose(bool isfalse)
  86         {
  87
  88             if (isfalse && redis != null)
  89             {
  90
  91                 redis.Dispose();
  92                 redis = null;
  93             }
  94         }
  95
  96         #endregion
  97     }
  98
  99
  100     /// <summary>
  101     /// Memcached缓存
  102     /// </summary>
  103     public class MemcachedCache : BaseCache
  104     {
  105
  106
  107     }
  View Code