發現博客園中好多大牛在介紹本身的開源項目是不多用到緩存,好比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> ///