SysCacheService.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. namespace Admin.NET.Core.Service;
  2. /// <summary>
  3. /// 系统缓存服务
  4. /// </summary>
  5. [ApiDescriptionSettings(Order = 400)]
  6. public class SysCacheService : IDynamicApiController, ISingleton
  7. {
  8. private readonly ICache _cache;
  9. public SysCacheService(ICache cache)
  10. {
  11. _cache = cache;
  12. }
  13. /// <summary>
  14. /// 获取缓存键名集合
  15. /// </summary>
  16. /// <returns></returns>
  17. [DisplayName("获取缓存键名集合")]
  18. public List<string> GetKeyList()
  19. {
  20. return _cache.Keys.ToList();
  21. }
  22. /// <summary>
  23. /// 增加缓存
  24. /// </summary>
  25. /// <param name="key"></param>
  26. /// <param name="value"></param>
  27. /// <returns></returns>
  28. [ApiDescriptionSettings(false)]
  29. public void Set(string key, object value)
  30. {
  31. _cache.Set(key, value);
  32. }
  33. /// <summary>
  34. /// 增加缓存并设置过期时间
  35. /// </summary>
  36. /// <param name="key"></param>
  37. /// <param name="value"></param>
  38. /// <param name="expire"></param>
  39. /// <returns></returns>
  40. [ApiDescriptionSettings(false)]
  41. public void Set(string key, object value, TimeSpan expire)
  42. {
  43. _cache.Set(key, value, expire);
  44. }
  45. /// <summary>
  46. /// 获取缓存
  47. /// </summary>
  48. /// <typeparam name="T"></typeparam>
  49. /// <param name="key"></param>
  50. /// <returns></returns>
  51. [ApiDescriptionSettings(false)]
  52. public T Get<T>(string key)
  53. {
  54. return _cache.Get<T>(key);
  55. }
  56. /// <summary>
  57. /// 删除缓存
  58. /// </summary>
  59. /// <param name="key"></param>
  60. /// <returns></returns>
  61. [ApiDescriptionSettings(Name = "Delete"), HttpPost]
  62. [DisplayName("删除缓存")]
  63. public void Remove(string key)
  64. {
  65. _cache.Remove(key);
  66. }
  67. /// <summary>
  68. /// 检查缓存是否存在
  69. /// </summary>
  70. /// <param name="key">键</param>
  71. /// <returns></returns>
  72. [ApiDescriptionSettings(false)]
  73. public bool ExistKey(string key)
  74. {
  75. return _cache.ContainsKey(key);
  76. }
  77. /// <summary>
  78. /// 根据键名前缀删除缓存
  79. /// </summary>
  80. /// <param name="prefixKey">键名前缀</param>
  81. /// <returns></returns>
  82. [ApiDescriptionSettings(Name = "DeleteByPreKey"), HttpPost]
  83. [DisplayName("根据键名前缀删除缓存")]
  84. public int RemoveByPrefixKey(string prefixKey)
  85. {
  86. var delKeys = _cache.Keys.Where(u => u.StartsWith(prefixKey)).ToArray();
  87. if (!delKeys.Any()) return 0;
  88. return _cache.Remove(delKeys);
  89. }
  90. /// <summary>
  91. /// 获取缓存值
  92. /// </summary>
  93. /// <param name="key"></param>
  94. /// <returns></returns>
  95. [DisplayName("获取缓存值")]
  96. public dynamic GetValue(string key)
  97. {
  98. return _cache.Get<dynamic>(key);
  99. }
  100. }