Redis.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. using System;
  2. namespace CB.Cache.Redis
  3. {
  4. /// <summary>
  5. /// 版 本 1.0
  6. /// Copyright (c) 2016-2017
  7. /// 创建人:赵轶
  8. /// 日 期:2017.10.10
  9. /// 描 述:实现Redis
  10. /// </summary>
  11. public class Redis : ICacheStrategy
  12. {
  13. /// <summary>
  14. /// 默认缓存存活期为3600秒(1小时)
  15. /// </summary>
  16. protected int _timeOut = 3600;
  17. //private static object syncObj = new object();
  18. /// <summary>
  19. /// 设置到期相对时间[单位: 秒]
  20. /// </summary>
  21. public virtual int TimeOut
  22. {
  23. set { _timeOut = value > 0 ? value : 3600; }
  24. get { return _timeOut > 0 ? _timeOut : 3600; }
  25. }
  26. /// <summary>
  27. /// 添加指定ID的对象
  28. /// </summary>
  29. /// <param name="objId">缓存键</param>
  30. /// <param name="o">缓存对象</param>
  31. public void AddObject(string objId, object o)
  32. {
  33. RedisCache.Set(objId, o, DateTime.Now.AddSeconds(TimeOut));
  34. }
  35. /// <summary>
  36. /// 添加指定ID的对象
  37. /// </summary>
  38. /// <param name="objId">缓存键</param>
  39. /// <param name="o">缓存对象</param>
  40. /// <param name="expire">到期时间,单位:秒</param>
  41. public void AddObject(string objId, object o, int expire)
  42. {
  43. RedisCache.Set(objId, o, DateTime.Now.AddSeconds(expire));
  44. }
  45. /// <summary>
  46. /// 添加指定ID的对象(关联指定文件组)
  47. /// </summary>
  48. /// <param name="objId">缓存键</param>
  49. /// <param name="o">缓存对象</param>
  50. /// <param name="files">关联的文件名</param>
  51. public void AddObjectWithFileChange(string objId, object o, string[] files)
  52. {
  53. throw new NotImplementedException();
  54. }
  55. /// <summary>
  56. /// 添加指定ID的对象(关联指定键值组)
  57. /// </summary>
  58. /// <param name="objId">缓存键</param>
  59. /// <param name="o">缓存对象</param>
  60. /// <param name="dependKey">依赖键</param>
  61. public void AddObjectWithDepend(string objId, object o, string[] dependKey)
  62. {
  63. throw new NotImplementedException();
  64. }
  65. /// <summary>
  66. /// 移除指定ID的对象
  67. /// </summary>
  68. /// <param name="objId">缓存键</param>
  69. public void RemoveObject(string objId)
  70. {
  71. RedisCache.Remove(objId);
  72. }
  73. /// <summary>
  74. /// 返回指定ID的对象
  75. /// </summary>
  76. /// <param name="objId">缓存键</param>
  77. /// <returns></returns>
  78. public object GetObject(string objId)
  79. {
  80. return RedisCache.Get<object>(objId);
  81. }
  82. /// <summary>
  83. /// 清空的有缓存数据, 注: 考虑效率问题,建议仅在需要时(如后台管理)使用.
  84. /// </summary>
  85. public void FlushAll()
  86. {
  87. RedisCache.RemoveAll();
  88. }
  89. }
  90. }