123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
-
- using Newtonsoft.Json;
- using StackExchange.Redis;
- using System;
- using System.Collections.Concurrent;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Linq;
- using System.Reflection;
- using System.Text;
- namespace OASystem.Infrastructure.Tools
- {
- public class RedisHelper : IDisposable
- {
- //连接字符串
- private string _connectionString;
- //实例名称
- private string _instanceName;
- //默认数据库
- private int _defaultDB;
- private ConcurrentDictionary<string, ConnectionMultiplexer> _connections;
- public RedisHelper(string connectionString, string instanceName, int defaultDB = 0)
- {
- _connectionString = connectionString;
- _instanceName = instanceName;
- _defaultDB = defaultDB;
- _connections = new ConcurrentDictionary<string, ConnectionMultiplexer>();
- }
- /// <summary>
- /// 获取ConnectionMultiplexer
- /// </summary>
- /// <returns></returns>
- private ConnectionMultiplexer GetConnect()
- {
- return _connections.GetOrAdd(_instanceName, p => ConnectionMultiplexer.Connect(_connectionString));
- }
- /// <summary>
- /// 获取数据库
- /// </summary>
- /// <param name="configName"></param>
- /// <param name="db">默认为0:优先代码的db配置,其次config中的配置</param>
- /// <returns></returns>
- public IDatabase GetDatabase(RedisEnum redisEnum)
- {
- return GetConnect().GetDatabase((int)redisEnum);
- }
- public IServer GetServer(string configName = null, int endPointsIndex = 0)
- {
- var confOption = ConfigurationOptions.Parse(_connectionString);
- return GetConnect().GetServer(confOption.EndPoints[endPointsIndex]);
- }
- public ISubscriber GetSubscriber(string configName = null)
- {
- return GetConnect().GetSubscriber();
- }
- public void Dispose()
- {
- if (_connections != null && _connections.Count > 0)
- {
- foreach (var item in _connections.Values)
- {
- item.Close();
- }
- }
- }
- }
- }
|