• Redis连接


    using System;
    using System.Configuration;
    using StackExchange.Redis;
    
    namespace Redis
    {
        public sealed class RedisDbContext
        {
            /// <summary>
            /// Redis连接器
            /// </summary>
            private static Lazy<ConnectionMultiplexer> _lazyConnection;
    
            /// <summary>
            /// Redis单例.
            /// </summary>
            /// <returns></returns>
            public static IDatabase Instance()
            {
                return Instance(null);
            }
    
            /// <summary>
            /// Redis单例.
            /// </summary>
            /// <param name="connectionString">Redis服务器连接地址.</param>
            /// <returns></returns>
            public static IDatabase Instance(string connectionString)
            {
                return Instance(connectionString, 0);
            }
    
            /// <summary>
            ///  Redis单例.
            /// </summary>
            /// <param name="connectionString">Redis服务器连接地址.</param>
            /// <param name="db">Redis服务器数据库索引(0-10).</param>
            /// <returns></returns>
            /// <exception cref="System.ArgumentNullException">Redis服务器单例过程失败</exception>
            public static IDatabase Instance(string connectionString, int db)
            {
                if (_lazyConnection == null)
                {
                    lock (typeof(RedisDbContext))
                    {
                        if (_lazyConnection == null)
                        {
                            if (string.IsNullOrWhiteSpace(connectionString))
                            {
                                InitRedis();
                            }
                            else
                            {
                                InitRedis(connectionString);
                            }
                        }
                    }
                }
    
                if (_lazyConnection == null)
                {
                    throw new Exception("Redis服务器连接失败");
                }
    
                return _lazyConnection.Value.GetDatabase(db);
            }
    
            /// <summary>
            /// 初始化Redis连接器.
            /// </summary>
            private static void InitRedis()
            {
                InitRedis(ConfigurationManager.AppSettings["RedisConnection"]);
            }
    
            /// <summary>
            /// 初始化Redis连接器.
            /// </summary>
            /// <param name="connectionString">Redis服务器连接地址.</param>
            /// <exception cref="System.ArgumentNullException">Redis服务器连接地址ConnectionString未配置</exception>
            private static void InitRedis(string connectionString)
            {
                if (string.IsNullOrEmpty(connectionString))
                {
                    throw new ArgumentNullException("Redis服务器地址未配置");
                }
    
                _lazyConnection = new Lazy<ConnectionMultiplexer>(
                    () => ConnectionMultiplexer.Connect(new ConfigurationOptions()
                    {
                        AbortOnConnectFail = false,
                        EndPoints = { connectionString }
                    }));
            }
        }
    }
  • 相关阅读:
    The analysis of China's holding the Olympic Games
    ASP.NET获取客户端的操作系统、浏览器、.NET版本等信息(图)
    ASP.NET 无提示关闭窗口
    VC 使用CryptoAPI计算Hash值:MD5, SHA
    SQL Server 2005 中设置某个用户对某一个数据库有完全控制的权限
    C# 计算文件的MD5值
    VC 获取物理网卡的MAC地址
    哪些免费邮箱不在邮件内容里插广告?
    忆同学
    使用正则表达式获取连接字符串某项的值
  • 原文地址:https://www.cnblogs.com/zhshlimi/p/6076558.html
Copyright © 2020-2023  润新知