RedisService.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using StackExchange.Redis;
  7. using System.Configuration;
  8. using Newtonsoft.Json;
  9. namespace Cache
  10. {
  11. public class RedisService:ICache
  12. {
  13. private static readonly string Coonstr = ConfigurationManager.ConnectionStrings["redisconnstring"].ToString();
  14. private static object _locker = new Object();
  15. private static ConnectionMultiplexer _instance = null;
  16. /// <summary>
  17. /// 使用一个静态属性来返回已连接的实例,如下列中所示。这样,一旦 ConnectionMultiplexer 断开连接,便可以初始化新的连接实例。
  18. /// </summary>
  19. public ConnectionMultiplexer Instance
  20. {
  21. get
  22. {
  23. if (_instance == null)
  24. {
  25. lock (_locker)
  26. {
  27. if (_instance == null || !_instance.IsConnected)
  28. {
  29. _instance = ConnectionMultiplexer.Connect(Coonstr);
  30. }
  31. }
  32. }
  33. //注册如下事件
  34. // _instance.ConnectionFailed += MuxerConnectionFailed;
  35. // _instance.ConnectionRestored += MuxerConnectionRestored;
  36. // _instance.ErrorMessage += MuxerErrorMessage;
  37. // _instance.ConfigurationChanged += MuxerConfigurationChanged;
  38. // _instance.HashSlotMoved += MuxerHashSlotMoved;
  39. // _instance.InternalError += MuxerInternalError;
  40. return _instance;
  41. }
  42. }
  43. static RedisService()
  44. {
  45. }
  46. public void DeleteTable(string table)
  47. {
  48. var db = _instance.GetDatabase();
  49. db.KeyDelete(table);
  50. }
  51. public void Insert(string table, Object data)
  52. {
  53. var db = _instance.GetDatabase();
  54. db.StringSet(table, JsonConvert.SerializeObject(data));
  55. }
  56. public T Get<T>(string table)
  57. {
  58. var db = _instance.GetDatabase();
  59. var data=db.StringGet(table);
  60. return JsonConvert.DeserializeObject<T>(data);
  61. }
  62. }
  63. }