Discuz!NT中集成Memcached分布式缓存
文章出处:DIY部落(http://www.diybl.com/course/3_program/cshapo/csharpsl/20100112/189244.html)

其实在之前的那篇关于Discuz!NT缓存架构的文章中已提到过,使用了设计模式中的“策略模式”来构造。所以为了与以往使用缓存的代码格式相兼容,所以这里采用新添加MemCachedStrategy(MemCached策略)来构造一个缓存策略类以便于当管理后台开启“MemCached”时以“MemCached策略模式”来做为当前系统默认
的策略模式。

       其代码段如下(Discuz.Cache/MemCached.cs):

 1 /// <summary>
 2 /// MemCache缓存策略类
 3 /// </summary>
 4 public class MemCachedStrategy : Discuz.Cache.ICacheStrategy
 5 {
 6 
 7     /// <summary>
 8     /// 添加指定ID的对象
 9     /// </summary>
10     /// <param name="objId"></param>
11     /// <param name="o"></param>
12     public void AddObject(string objId, object o)
13     {
14         RemoveObject(objId);
15         if (TimeOut > 0)
16         {
17             MemCachedManager.CacheClient.Set(objId, o, System.DateTime.Now.AddMinutes(TimeOut));
18         }
19         else
20         {
21             MemCachedManager.CacheClient.Set(objId, o);
22         }
23     }
24 
25     /// <summary>
26     /// 添加指定ID的对象(关联指定文件组)
27     /// </summary>
28     /// <param name="objId"></param>
29     /// <param name="o"></param>
30     /// <param name="files"></param>
31     public void AddObjectWithFileChange(string objId, object o, string[] files)
32     {
33         ;
34     }
35 
36     /// <summary>
37     /// 添加指定ID的对象(关联指定键值组)
38     /// </summary>
39     /// <param name="objId"></param>
40     /// <param name="o"></param>
41     /// <param name="dependKey"></param>
42     public void AddObjectWithDepend(string objId, object o, string[] dependKey)
43     {
44         ;
45     }
46 
47     /// <summary>
48     /// 移除指定ID的对象
49     /// </summary>
50     /// <param name="objId"></param>
51     public void RemoveObject(string objId)
52     {
53         if (MemCachedManager.CacheClient.KeyExists(objId))
54             MemCachedManager.CacheClient.Delete(objId);
55     }
56 
57     /// <summary>
58     /// 返回指定ID的对象
59     /// </summary>
60     /// <param name="objId"></param>
61     /// <returns></returns>
62     public object RetrieveObject(string objId)
63     {
64         return MemCachedManager.CacheClient.Get(objId);
65     }
66 
67     /// <summary>
68     /// 到期时间
69     /// </summary>
70     public int TimeOut { setget; }
71 }

相关文章:

  • 2022-01-21
  • 2021-11-20
  • 2021-12-23
  • 2021-05-18
  • 2021-07-27
  • 2022-01-02
  • 2021-11-23
  • 2021-04-27
猜你喜欢
  • 2021-12-31
  • 2022-01-25
  • 2021-10-06
  • 2021-10-22
  • 2021-06-11
相关资源
相似解决方案