RedisHelper.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. 
  2. using Newtonsoft.Json;
  3. using StackExchange.Redis;
  4. using System;
  5. using System.Collections.Concurrent;
  6. using System.Collections.Generic;
  7. using System.ComponentModel;
  8. using System.Linq;
  9. using System.Reflection;
  10. using System.Text;
  11. namespace OASystem.Infrastructure.Tools
  12. {
  13. public class RedisHelper {
  14. }
  15. public class RedisHelper1 : IDisposable
  16. {
  17. //连接字符串
  18. private string _connectionString;
  19. //实例名称
  20. private string _instanceName;
  21. //默认数据库
  22. private int _defaultDB;
  23. private ConcurrentDictionary<string, ConnectionMultiplexer> _connections;
  24. public RedisHelper1(string connectionString, string instanceName, int defaultDB = 0)
  25. {
  26. _connectionString = connectionString;
  27. _instanceName = instanceName;
  28. _defaultDB = defaultDB;
  29. _connections = new ConcurrentDictionary<string, ConnectionMultiplexer>();
  30. }
  31. /// <summary>
  32. /// 获取ConnectionMultiplexer
  33. /// </summary>
  34. /// <returns></returns>
  35. private ConnectionMultiplexer GetConnect()
  36. {
  37. return _connections.GetOrAdd(_instanceName, p => ConnectionMultiplexer.Connect(_connectionString));
  38. }
  39. /// <summary>
  40. /// 获取数据库
  41. /// </summary>
  42. /// <param name="configName"></param>
  43. /// <param name="db">默认为0:优先代码的db配置,其次config中的配置</param>
  44. /// <returns></returns>
  45. public IDatabase GetDatabase(RedisEnum redisEnum)
  46. {
  47. return GetConnect().GetDatabase((int)redisEnum);
  48. }
  49. public IServer GetServer(string configName = null, int endPointsIndex = 0)
  50. {
  51. var confOption = ConfigurationOptions.Parse(_connectionString);
  52. return GetConnect().GetServer(confOption.EndPoints[endPointsIndex]);
  53. }
  54. public ISubscriber GetSubscriber(string configName = null)
  55. {
  56. return GetConnect().GetSubscriber();
  57. }
  58. public void Dispose()
  59. {
  60. if (_connections != null && _connections.Count > 0)
  61. {
  62. foreach (var item in _connections.Values)
  63. {
  64. item.Close();
  65. }
  66. }
  67. }
  68. }
  69. }