SysCacheService.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. using NewLife.Caching;
  2. namespace Admin.NET.Core.Service;
  3. /// <summary>
  4. /// 系统缓存服务
  5. /// </summary>
  6. [ApiDescriptionSettings(Order = 190)]
  7. public class SysCacheService : IDynamicApiController, ISingleton
  8. {
  9. private readonly ICache _cache;
  10. public SysCacheService(ICache cache)
  11. {
  12. _cache = cache;
  13. }
  14. /// <summary>
  15. /// 获取所有缓存键名
  16. /// </summary>
  17. /// <returns></returns>
  18. [HttpGet("/sysCache/keyList")]
  19. public List<string> GetCacheKeys()
  20. {
  21. return _cache.Keys.ToList();
  22. }
  23. /// <summary>
  24. /// 增加缓存
  25. /// </summary>
  26. /// <param name="key"></param>
  27. /// <param name="value"></param>
  28. /// <returns></returns>
  29. [HttpPost("/sysCache/add")]
  30. public void Set(string key, object value)
  31. {
  32. _cache.Set(key, value);
  33. }
  34. /// <summary>
  35. /// 增加缓存并设置过期时间
  36. /// </summary>
  37. /// <param name="key"></param>
  38. /// <param name="value"></param>
  39. /// <param name="expire"></param>
  40. /// <returns></returns>
  41. [HttpPost("/sysCache/add/expire")]
  42. public void Set(string key, object value, TimeSpan expire)
  43. {
  44. _cache.Set(key, value, expire);
  45. }
  46. /// <summary>
  47. /// 获取缓存
  48. /// </summary>
  49. /// <typeparam name="T"></typeparam>
  50. /// <param name="key"></param>
  51. /// <returns></returns>
  52. [NonAction]
  53. public T Get<T>(string key)
  54. {
  55. return _cache.Get<T>(key);
  56. }
  57. /// <summary>
  58. /// 删除缓存
  59. /// </summary>
  60. /// <param name="key"></param>
  61. /// <returns></returns>
  62. [HttpPost("/sysCache/delete")]
  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. [NonAction]
  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. [HttpPost("/sysCache/delByParentKey")]
  83. public int RemoveByPrefixKey(string prefixKey)
  84. {
  85. var delKeys = _cache.Keys.Where(u => u.StartsWith(prefixKey)).ToArray();
  86. if (!delKeys.Any()) return 0;
  87. return _cache.Remove(delKeys);
  88. }
  89. /// <summary>
  90. /// 获取缓存值
  91. /// </summary>
  92. /// <param name="key"></param>
  93. /// <returns></returns>
  94. [HttpGet("/sysCache/value")]
  95. public dynamic GetCacheValue(string key)
  96. {
  97. return _cache.Get<dynamic>(key);
  98. }
  99. }