1 / 28
文档名称:

DiscuzNT中集成Memcached分布式缓存.doc

格式:doc   大小:107KB   页数:28页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

DiscuzNT中集成Memcached分布式缓存.doc

上传人:260933426 2017/8/21 文件大小:107 KB

下载得到文件列表

DiscuzNT中集成Memcached分布式缓存.doc

文档介绍

文档介绍:Discuz!NT中集成Memcached分布式缓存
      大约在两年前我写过一篇关于Discuz!NT缓存架构的文章,在那篇文章的结尾介绍了在IIS中如果开启多个应用程序池会造成多个缓存实例之间数据同步的问题。虽然给出了一个解决方案,但无形中却把压力转移到了磁盘I/O上()。其实从那时起我就开始关注有什么更好的方案,当然今天本文中所说的Memcached,以及Velocity等这类的分布式缓存方案之前都考虑过,但一直未能决定该使用那个。 ,虽然是原生态,但有些远水解不了近火。
      我想真正等到Velocity能堪当重任还要等上一段时间。于是我就开始将注意力转移到了Memcached,必定有Facebook这只“超级小白鼠”使用它并且反响还不错。所以就开始尝试动手在产品中集成Memcached。
      其实在之前的那篇关于Discuz!NT缓存架构的文章中已提到过,使用了设计模式中的“策略模式”来构造。
所以为了与以往使用缓存的代码格式相兼容,所以这里采用新添加MemCachedStrategy(MemCached策略)
来构造一个缓存策略类以便于当管理后台开启“MemCached”时以“MemCached策略模式”来做为当前系统默认
的策略模式。
    其代码段如下():
    
/// <summary>
/// MemCache缓存策略类
/// </summary>
public class MemCachedStrategy : 
{
    
/// <summary>
    /// 添加指定ID的对象
    /// </summary>
    /// <param name="objId"></param>
    /// <param name="o"></param>
    public void AddObject(string objId, object o)
    {
        RemoveObject(objId);
        if (TimeOut > 0)
        {
            (objId, o, (TimeOut));
        }
        else
        {
            (objId, o);
        }
    }
    /// <summary>
    /// 添加指定ID的对象(关联指定文件组)
    /// </summary>
    /// <param name="objId"></param>
    /// <param name="o"></param>
    /// <param name="files"></param>
    public void AddObjectWithFileChange(string objId, object o, string[] files)
    {
        ;
    }
    
/// <summary>
    /// 添加指定ID的对象(关联指定键值组)
    /// </summary>
&#160;&#160;&#160;&#160;///&#160;&lt;param&#160;name=&quot;objId&quot;&gt;&lt;/param&gt;<br