建站学 - 轻松建站从此开始!

建站学-个人建站指南,网页制作,网站设计,网站制作教程

当前位置: 建站学 > 网站开发 > asp.net教程 >

Discuz!NT中集成Memcached分布式缓存(3)

时间:2009-03-23 19:00来源: 作者: 点击:
当然,做完这一步之后就是对调用缓存策略的主体类进行修改来,使其根据对管理后台的设计来决定 加载什么样的缓存策略,如下: /// summary /// Discuz!NT缓存类 /// 对Discuz!NT论坛缓存进行全局控制管理 /// /summ

     当然,做完这一步之后就是对调用“缓存策略”的主体类进行修改来,使其根据对管理后台的设计来决定
加载什么样的缓存策略,如下:

/// <summary>
/// Discuz!NT缓存类
/// 对Discuz!NT论坛缓存进行全局控制管理
/// </summary>
public class DNTCache
{
    .
    
    
//通过该变量决定是否启用MemCached
    private static bool applyMemCached = MemCachedConfigs.GetConfig().ApplyMemCached;     

    
/// <summary>
    
/// 构造函数
    
/// </summary>
    private DNTCache()
    {
        
if (applyMemCached)
            cs 
= new MemCachedStrategy();
        
else
        {
            cs 
= new DefaultCacheStrategy();

            objectXmlMap 
= rootXml.CreateElement("Cache");
            
//建立内部XML文档.
            rootXml.AppendChild(objectXmlMap);

            
//LogVisitor clv = new CacheLogVisitor();
            
//cs.Accept(clv);

            cacheConfigTimer.AutoReset 
= true;
            cacheConfigTimer.Enabled 
= true;
            cacheConfigTimer.Elapsed 
+= new System.Timers.ElapsedEventHandler(Timer_Elapsed);
            cacheConfigTimer.Start();
        }
    }
    
    

    
    到这里,主要的开发和修改基本上就告一段落了。下面开始介绍一下如果使用Stats命令来查看缓存的
分配和使用等情况。之前在枚举类型Stats中看到该命令有几个主要的参数,分别是:
 
    stats
    stats reset
    stats malloc
    stats maps
    stats sizes
    stats slabs
    stats items
    stats cachedump slab_id limit_num
    stats detail [on|off|dump]
    
    而JAVAEYE的 robbin 写过一篇文章:贴一段遍历memcached缓存对象的小脚本,来介绍如何使用其中的  
“stats cachedump”来获取信息。受这篇文章的启发,我将MemCachedClient.cs文件中的Stats方法加以修
改,添加了一个command参数(字符串型),这样就可以向缓存服务器发送上面所说的那几种类型的命令了。

    测试代码如下:
    
protected void Submit_Click(object sender, EventArgs e)
{
    ArrayList arrayList 
= new ArrayList();
    arrayList.Add(
"10.0.1.52:11211");//缓存服务器的地址

    StateResult.DataSource 
= MemCachedManager.GetStats(arrayList, (MemCachedManager.Stats)         
                                     Utils.StrToInt(StatsParam.SelectedValue, 
0), Param.Text);
    StateResult.DataBind();            
}


    页面代码如下:
    
   

   

    

     我这样做的目的有两个,一个是避免每次都使用telnet协议远程登陆缓存服务器并输入相应的命令行
参数(我记忆力不好,参数多了之后就爱忘)。二是将来会把这个页面功能内置到管理后台上,以便后台
管理员可以动态监测每台缓存服务器上的数据。


     好了,到这里今天的内容就差不多了。在本文中我们看到了使用设计模式的好处,通过它我们可以让
自己写的代码支持“变化”。这里不妨再多说几句,大家看到了velocity在使用上也是很方便,如果可以
的话,未来可以也会将velocity做成一个“缓存策略”,这样站长或管理员就可以根据自己公司的实际情
况来加以灵活配置了。 (责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片