SysCacheService.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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. public List<string> GetKeyList()
  18. {
  19. return _cache.Keys.ToList();
  20. }
  21. /// <summary>
  22. /// 增加缓存
  23. /// </summary>
  24. /// <param name="key"></param>
  25. /// <param name="value"></param>
  26. /// <returns></returns>
  27. [ApiDescriptionSettings(Name = "Add")]
  28. public void Set(string key, object value)
  29. {
  30. _cache.Set(key, value);
  31. }
  32. /// <summary>
  33. /// 增加缓存并设置过期时间
  34. /// </summary>
  35. /// <param name="key"></param>
  36. /// <param name="value"></param>
  37. /// <param name="expire"></param>
  38. /// <returns></returns>
  39. [ApiDescriptionSettings(Name = "AddAndSetExp")]
  40. public void Set(string key, object value, TimeSpan expire)
  41. {
  42. _cache.Set(key, value, expire);
  43. }
  44. /// <summary>
  45. /// 获取缓存
  46. /// </summary>
  47. /// <typeparam name="T"></typeparam>
  48. /// <param name="key"></param>
  49. /// <returns></returns>
  50. [NonAction]
  51. public T Get<T>(string key)
  52. {
  53. return _cache.Get<T>(key);
  54. }
  55. /// <summary>
  56. /// 删除缓存
  57. /// </summary>
  58. /// <param name="key"></param>
  59. /// <returns></returns>
  60. [ApiDescriptionSettings(Name = "Delete")]
  61. public void Remove(string key)
  62. {
  63. _cache.Remove(key);
  64. }
  65. /// <summary>
  66. /// 检查缓存是否存在
  67. /// </summary>
  68. /// <param name="key">键</param>
  69. /// <returns></returns>
  70. [NonAction]
  71. public bool ExistKey(string key)
  72. {
  73. return _cache.ContainsKey(key);
  74. }
  75. /// <summary>
  76. /// 根据键名前缀删除缓存
  77. /// </summary>
  78. /// <param name="prefixKey">键名前缀</param>
  79. /// <returns></returns>
  80. [ApiDescriptionSettings(Name = "DeleteByPreKey")]
  81. public int RemoveByPrefixKey(string prefixKey)
  82. {
  83. var delKeys = _cache.Keys.Where(u => u.StartsWith(prefixKey)).ToArray();
  84. if (!delKeys.Any()) return 0;
  85. return _cache.Remove(delKeys);
  86. }
  87. /// <summary>
  88. /// 获取缓存值
  89. /// </summary>
  90. /// <param name="key"></param>
  91. /// <returns></returns>
  92. public dynamic GetValue(string key)
  93. {
  94. return _cache.Get<dynamic>(key);
  95. }
  96. }