ICache.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. namespace CarLocalMeter
  6. {
  7. /// <summary>
  8. /// 缓存接口
  9. /// </summary>
  10. public interface ICache
  11. {
  12. #region 设置缓存
  13. /// <summary>
  14. /// 设置缓存
  15. /// 注:默认过期类型为绝对过期
  16. /// </summary>
  17. /// <param name="key">主键</param>
  18. /// <param name="value">值</param>
  19. /// <param name="timeout">过期时间间隔</param>
  20. /// <param name="expireType">过期类型</param>
  21. void SetCache(string key, object value, int timeout = 0, ExpireType expireType = default);
  22. /// <summary>
  23. /// 设置键失效时间
  24. /// </summary>
  25. /// <param name="key">键值</param>
  26. /// <param name="expire">从现在起时间间隔</param>
  27. void SetKeyExpire(string key, int expire);
  28. #endregion
  29. #region 获取缓存
  30. /// <summary>
  31. /// 获取缓存
  32. /// </summary>
  33. /// <param name="key">主键</param>
  34. /// <typeparam name="T">数据类型</typeparam>
  35. T GetCache<T>(string key);
  36. #endregion
  37. #region 删除缓存
  38. /// <summary>
  39. /// 清除缓存
  40. /// </summary>
  41. /// <param name="key">主键</param>
  42. void RemoveCache(string key);
  43. #endregion
  44. }
  45. #region 类型定义
  46. /// <summary>
  47. /// 值信息
  48. /// </summary>
  49. public struct ValueInfoEntry
  50. {
  51. public string Value { get; set; }
  52. public string TypeName { get; set; }
  53. public int ExpireTime { get; set; }
  54. public ExpireType? ExpireType { get; set; }
  55. }
  56. /// <summary>
  57. /// 过期类型
  58. /// </summary>
  59. public enum ExpireType
  60. {
  61. /// <summary>
  62. /// 绝对过期
  63. /// 注:即自创建一段时间后就过期
  64. /// </summary>
  65. Absolute,
  66. /// <summary>
  67. /// 相对过期
  68. /// 注:即该键未被访问后一段时间后过期,若此键一直被访问则过期时间自动延长
  69. /// </summary>
  70. Relative,
  71. }
  72. #endregion
  73. }