发现博客园中好多大牛在介绍本身的开源项目是不多用到缓存,好比Memcached、Redis、mongodb等,今天得空抽时间把Redis缓存研究了一下,写下来总结一下,跟你们一块儿分享 一下。因为小弟水平有限又是第一次接触Redis,有些的不对的地方欢迎指出纠正。git
一、 下载安装Redisgithub
下载地址: https://github.com/MSOpenTech/Redis 。redis
二、 安装Redismongodb
在下载的文件中找到bin并打开。数据库
Redis有不少配置参数,这里就不介绍了,有兴趣的朋友能够到网上查查。缓存
双击redis-server.exe或者在命令窗口中输入D:\redis-2.6\redis-server.exe便可启动Redis服务。函数
注意 端口号:Port:6379 在咱们的程序中会用到该端口号。工具
三、 数据读、写、删测试,并实现list存数。性能
首先引用下面四个DLL文件测试
using System;
using System.Collections.Generic; using System.Linq; using System.Text; using ServiceStack.Redis; using ServiceStack.Text; using ServiceStack.Redis.Generic; namespace RedisStudy { public class RedisHelper:IDisposable { public RedisClient Redis = new RedisClient("127.0.0.1", 6379); //缓存池 PooledRedisClientManager prcm = new PooledRedisClientManager(); //默认缓存过时时间单位秒 public int secondsTimeOut = 30 * 60; /// <summary> /// 缓冲池 /// </summary> /// <param name="readWriteHosts"></param> /// <param name="readOnlyHosts"></param> /// <returns></returns> public static PooledRedisClientManager CreateManager( string[] readWriteHosts, string[] readOnlyHosts) { return new PooledRedisClientManager(readWriteHosts, readOnlyHosts, new RedisClientManagerConfig { MaxWritePoolSize = readWriteHosts.Length * 5, MaxReadPoolSize = readOnlyHosts.Length * 5, AutoStart = true, });// { RedisClientFactory = (IRedisClientFactory)RedisCacheClientFactory.Instance.CreateRedisClient("127.0.0.1", 6379) }; } /// <summary> /// 构造函数 /// </summary> /// <param name="OpenPooledRedis">是否开启缓冲池</param> public RedisHelper(bool OpenPooledRedis=false) { if (OpenPooledRedis) { prcm = CreateManager(new string[] { "127.0.0.1:6379" }, new string[] { "127.0.0.1:6379" }); Redis = prcm.GetClient() as RedisClient; } } #region Key/Value存储 /// <summary> /// 设置缓存 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="key">缓存建</param> /// <param name="t">缓存值</param> /// <param name="timeout">过时时间,单位秒,-1:不过时,0:默认过时时间</param> /// <returns></returns> public bool Set<T>(string key, T t, int timeout = 0) { if (timeout >= 0) { if (timeout > 0) { secondsTimeOut = timeout; } Redis.Expire(key, secondsTimeOut); } return Redis.Add<T>(key, t); } /// <summary> /// 获取 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="key"></param> /// <returns></returns> public T Get<T>(string key) { return Redis.Get<T>(key); } /// <summary> /// 删除 /// </summary> /// <param name="key"></param> ///