ICache.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. using System;
  2. using System.Threading.Tasks;
  3. namespace Admin.Core.Common.Cache
  4. {
  5. /// <summary>
  6. /// 缓存接口
  7. /// </summary>
  8. public interface ICache
  9. {
  10. /// <summary>
  11. /// 用于在 key 存在时删除 key
  12. /// </summary>
  13. /// <param name="key">键</param>
  14. long Del(params string[] key);
  15. /// <summary>
  16. /// 用于在 key 存在时删除 key
  17. /// </summary>
  18. /// <param name="key">键</param>
  19. /// <returns></returns>
  20. Task<long> DelAsync(params string[] key);
  21. /// <summary>
  22. /// 用于在 key 模板存在时删除
  23. /// </summary>
  24. /// <param name="pattern">key模板</param>
  25. /// <returns></returns>
  26. Task<long> DelByPatternAsync(string pattern);
  27. /// <summary>
  28. /// 检查给定 key 是否存在
  29. /// </summary>
  30. /// <param name="key">键</param>
  31. /// <returns></returns>
  32. bool Exists(string key);
  33. /// <summary>
  34. /// 检查给定 key 是否存在
  35. /// </summary>
  36. /// <param name="key">键</param>
  37. /// <returns></returns>
  38. Task<bool> ExistsAsync(string key);
  39. /// <summary>
  40. /// 获取指定 key 的值
  41. /// </summary>
  42. /// <param name="key">键</param>
  43. /// <returns></returns>
  44. string Get(string key);
  45. /// <summary>
  46. /// 获取指定 key 的值
  47. /// </summary>
  48. /// <typeparam name="T">数据类型</typeparam>
  49. /// <param name="key">键</param>
  50. /// <returns></returns>
  51. T Get<T>(string key);
  52. /// <summary>
  53. /// 获取指定 key 的值
  54. /// </summary>
  55. /// <param name="key">键</param>
  56. /// <returns></returns>
  57. Task<string> GetAsync(string key);
  58. /// <summary>
  59. /// 获取指定 key 的值
  60. /// </summary>
  61. /// <typeparam name="T">数据类型</typeparam>
  62. /// <param name="key">键</param>
  63. /// <returns></returns>
  64. Task<T> GetAsync<T>(string key);
  65. /// <summary>
  66. /// 设置指定 key 的值,所有写入参数object都支持string | byte[] | 数值 | 对象
  67. /// </summary>
  68. /// <param name="key">键</param>
  69. /// <param name="value">值</param>
  70. bool Set(string key, object value);
  71. /// <summary>
  72. /// 设置指定 key 的值,所有写入参数object都支持string | byte[] | 数值 | 对象
  73. /// </summary>
  74. /// <param name="key">键</param>
  75. /// <param name="value">值</param>
  76. /// <param name="expire">有效期</param>
  77. bool Set(string key, object value, TimeSpan expire);
  78. /// <summary>
  79. /// 设置指定 key 的值,所有写入参数object都支持string | byte[] | 数值 | 对象
  80. /// </summary>
  81. /// <param name="key">键</param>
  82. /// <param name="value">值</param>
  83. /// <returns></returns>
  84. Task<bool> SetAsync(string key, object value);
  85. /// <summary>
  86. /// 设置指定 key 的值,所有写入参数object都支持string | byte[] | 数值 | 对象
  87. /// </summary>
  88. /// <param name="key">键</param>
  89. /// <param name="value">值</param>
  90. /// <param name="expire">有效期</param>
  91. /// <returns></returns>
  92. Task<bool> SetAsync(string key, object value, TimeSpan expire);
  93. /// <summary>
  94. /// 获取或设置缓存
  95. /// </summary>
  96. /// <typeparam name="T">数据类型</typeparam>
  97. /// <param name="key">键</param>
  98. /// <param name="func">获取数据的方法</param>
  99. /// <param name="expire">有效期</param>
  100. /// <returns></returns>
  101. Task<T> GetOrSetAsync<T>(string key, Func<Task<T>> func, TimeSpan? expire = null);
  102. }
  103. }