Redis ASP.NET 配置链接

对于安装Redis后 很是不明白如何建立Redis 和 .net 的链接配置 于是查找了很多的资料

首先第一步:安装ASP.NET  NuGet 包 (ServiceStack.Redis) 安装好后 查看引用如下:

这时候 首先在 ASP.NET Web.Config中<appSettings>节点中配置如下

<!--Redis 配置-->
    <add key="redis_server_write" value="Admin2018@127.0.0.1:6379" />
    <add key="redis_server_read" value="Admin2018@127.0.0.1:6379" />
    <add key="redis_max_read_pool" value="3" />
    <add key="redis_max_write_pool" value="1" />
<!--Redis 配置-->

 

第二步:就开始配置链接Redis的链接了:

  1>自定义创建一个RedisCacheHelper的配置类,代码如下:

public class RedisCacheHelper : ConfigurationSection
    {
        //读取Redis接口
        private static string GetRedis = ConfigurationManager.AppSettings["redis_server_read"];
        //读取数量
        private static int GetRedisNum =Convert.ToInt32(ConfigurationManager.AppSettings["redis_max_read_pool"]);
        //写入Redis接口
        private static string SetRedis = ConfigurationManager.AppSettings["redis_server_write"];
        //写入数量
        private static int SetRedisNum = Convert.ToInt32(ConfigurationManager.AppSettings["redis_max_write_pool"]);

        //定义连接池
        private static readonly PooledRedisClientManager Pool = null;

        //定义构造函数
         static RedisCacheHelper()
        {
            string [] GetRedisHost = GetRedis.Split(',');
            string [] SetRedisHost = SetRedis.Split(',');
            if(GetRedisHost.Length>0&&SetRedisHost.Length>0)
            {
                Pool = new PooledRedisClientManager(GetRedisHost, SetRedisHost, new RedisClientManagerConfig()
                {
                    MaxWritePoolSize = SetRedisNum,
                    MaxReadPoolSize = GetRedisNum,
                    AutoStart = true
                });
              
            }
           

        }

        /// <summary>
        /// 添加缓存
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="key"></param>
        /// <param name="value"></param>
        public static void Add<T>(string key,List<T> value)
        {
            if (value == null)
                return;
            try
            {
                if (Pool != null)
                {
                    using (var r = Pool.GetClient())
                    {
                        if (r != null)
                        {
                            r.SendTimeout = 1000;
                            r.Set<List<T>>(key, value);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                ErrorLog.WriteLog(ex);
            }
            
        }

        /// <summary>
        /// 查询单挑
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="key"></param>
        /// <returns></returns>
        public static T Get<T>(string key)
        {
            if(key==null)
                return default(T);
            try
            {
                if (Pool != null)
                {
                    using (var r = Pool.GetClient())
                    {
                        if (r != null)
                        {
                            r.SendTimeout = 1000;
                            return r.Get<T>(key);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                ErrorLog.WriteLog(ex);
            }
           
            return default(T);
        
        }

        /// <summary>
        /// 查询多条数据
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="key"></param>
        /// <returns></returns>
        public static List<T> GetAll<T>(string key)
        {
            if (key == null)
                return null;
            try
            {
                if (Pool != null)
                {
                    using (var r = Pool.GetClient())
                    {
                        if (r != null)
                        {
                            r.SendTimeout = 1000;
                            return r.Get<List<T>>(key);
                        }
                    }

                }
            }
            catch (Exception ex)
            {
                ErrorLog.WriteLog(ex);
            }
            
            return null;
        }

        /// <summary>
        /// 删除指定key缓存
        /// </summary>
        /// <param name="key"></param>
        public static void Remove(string key)
        {
            if (key == null)
                return;
            try
            {
                if (Pool != null)
                {
                    using (var r = Pool.GetClient())
                    {
                        if (r != null)
                        {
                            r.SendTimeout = 1000;
                            r.Remove(key);
                        }
                    }
                }
            }
            catch (Exception)
            {
                
                throw;
            }
        }

        /// <summary>
        /// 判断缓存是否存在
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public static bool Exists(string key)
        {
            if (key == null)
                return false;
            try
            {
                if (Pool != null)
                {
                    using (var r = Pool.GetClient())
                    {
                        if (r != null)
                        {
                            r.SendTimeout = 1000;
                            return  r.ContainsKey(key);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                ErrorLog.WriteLog(ex);
            }
            return false;
        }
    }

  

 在调用的时候 我们还可以在自定义一个Key键的类 用于方便操作存储已经修改。

posted on 2018-05-31 17:51  林林七  阅读(322)  评论(0编辑  收藏  举报

导航