123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- using System;
- using System.Collections.Concurrent;
- using System.Collections.Generic;
- using System.Configuration;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using Newtonsoft.Json;
- using StackExchange.Redis;
- namespace ProjectBase.Data.Redis
- {
- public class RedisConnection
- {
- // 系统自定义Key前缀
- public static readonly string SysCustomKey = ConfigurationManager.AppSettings["redisKey"] ?? "";
- // "127.0.0.1:6379,allowadmin=true
- private static readonly string RedisConnectionString = ConfigurationManager.ConnectionStrings["RedisExchangeHosts"].ConnectionString;
- private static readonly object Locker = new object();
- private static ConnectionMultiplexer _instance;
- private static readonly ConcurrentDictionary<string, ConnectionMultiplexer> ConnectionCache = new ConcurrentDictionary<string, ConnectionMultiplexer>();
- /// <summary>
- /// 单例获取
- /// </summary>
- public static ConnectionMultiplexer Instance
- {
- get
- {
- if (_instance == null)
- {
- lock (Locker)
- {
- if (_instance == null || !_instance.IsConnected)
- {
- _instance = GetManager();
- }
- }
- }
- return _instance;
- }
- }
- /// <summary>
- /// 缓存获取
- /// </summary>
- /// <param name="connectionString"></param>
- /// <returns></returns>
- public static ConnectionMultiplexer GetConnectionMultiplexer(string connectionString)
- {
- if (!ConnectionCache.ContainsKey(connectionString))
- {
- ConnectionCache[connectionString] = GetManager(connectionString);
- }
- return ConnectionCache[connectionString];
- }
- private static ConnectionMultiplexer GetManager(string connectionString = null)
- {
- connectionString = connectionString ?? RedisConnectionString;
- var connect = ConnectionMultiplexer.Connect(connectionString);
- //注册如下事件
- //connect.ConnectionFailed += MuxerConnectionFailed;
- //connect.ConnectionRestored += MuxerConnectionRestored;
- //connect.ErrorMessage += MuxerErrorMessage;
- //connect.ConfigurationChanged += MuxerConfigurationChanged;
- //connect.HashSlotMoved += MuxerHashSlotMoved;
- //connect.InternalError += MuxerInternalError;
- return connect;
- }
- }
- }
|