ServiceStack.Redis

一、在Asp.net中使用Redis

  StackExchange.Redis和ServiceStack.Redis是Redis的.net常用框架。因为StackExchange.Redis只支持.net4.0及以上版本,但是由于很多项目的后台框架都是.net3.x的版本,所以本文只介绍ServiceStack.Redis的安装和使用。
1.在Visual Studio的项目中添加引用

ServiceStack.Redis_第1张图片

2.选择使用Nuget安装包
  在浏览选项里搜索ServiceStack.Redis,并选择安装版本,如果项目后台框架.net版本过低,这里的redis客户端也要选择更低的版本。

ServiceStack.Redis_第2张图片

3.安装成功后会显示新增的引用

ServiceStack.Redis_第3张图片
  如果安装不成功会显示版本不兼容的问题,大家可以根据自己的.net版本选择不同的redis客户端,不局限于ServiceStack.Redis,记住千万不要更改自己项目的.net版本,因为很多历史原因,这里不再多说。

二、代码示例

public class RedisHelper
{
        public RedisHelper()
        {

        }
        //redis配置服务端IP和端口号
        public static RedisClient Redis = (RedisClient)CreateManager(new string[] { "10.12.75.126:6379" }, new string[] { "10.12.75.126:6379" }).GetClient();
        //缓存池
        PooledRedisClientManager prcm = new PooledRedisClientManager();

        //默认缓存过期时间(单位:秒)
        public int secondsTimeOut = 30 * 60;

        private readonly Regex userNameRegex = new Regex(@"\(.*?\)", RegexOptions.Singleline);

        ///
        ///缓冲池
        ///
        ///
        ///
        ///
        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,
            });
        }

        ///
        ///构造函数
        ///
        ///是否开启缓冲池
        public RedisHelper(bool OpenPooledRedis = false)
        {

            if (OpenPooledRedis)
            {
                prcm = CreateManager(new string[] { "10.12.75.126:6379" }, new string[] { "10.12.75.126:6379" });
                Redis = prcm.GetClient() as RedisClient;
            }

        }

        #region key/value存储
        ///
        ///设置缓存
        ///
        ///
        ///缓存键
        ///缓存值
        ///过期时间(单位:秒),-1:不过期,0:默认过期时间
        ///
        public bool Set(string key, T t, int timeout = 0)
        {
            if (timeout >= 0)
            {
                if (timeout > 0)
                {
                    secondsTimeOut = timeout;
                }
                Redis.Expire(key, secondsTimeOut);
            }

            return Redis.Add(key, t);
        }

        ///
        ///获取
        ///
        ///
        ///
        ///
        public T Get(string key)
        {
            return Redis.Get(key);
        }

        ///
        ///删除
        ///
        ///
        ///
        public bool Remove(string key)
        {
            return Redis.Remove(key);
        }

        ///
        ///增加(同Set方法)
        ///
        public bool Add(string key, T t, int timeout = 0)
        {
            if (timeout >= 0)
            {
                if (timeout > 0)
                {
                    secondsTimeOut = timeout;
                }
                Redis.Expire(key, secondsTimeOut);
            }

            return Redis.Add(key, t);
        }

        #endregion

        //释放资源
        public void Dispose()
        {
            if (Redis != null)
            {
                Redis.Dispose();
                Redis = null;
            }
            GC.Collect();
        }
    }
}

你可能感兴趣的:(Redis)