MemCached说明.docx

上传人:b****6 文档编号:4726562 上传时间:2022-12-08 格式:DOCX 页数:39 大小:41.35KB
下载 相关 举报
MemCached说明.docx_第1页
第1页 / 共39页
MemCached说明.docx_第2页
第2页 / 共39页
MemCached说明.docx_第3页
第3页 / 共39页
MemCached说明.docx_第4页
第4页 / 共39页
MemCached说明.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

MemCached说明.docx

《MemCached说明.docx》由会员分享,可在线阅读,更多相关《MemCached说明.docx(39页珍藏版)》请在冰豆网上搜索。

MemCached说明.docx

MemCached说明

一、安装Memcached及Memcached配置和状态查询

         要想使用Memcached做缓存首先需要安装Memcached服务,安装方法如下:

     1.下载Memcached:

现在的最新版本是1.2.6.注意下载正确的版本,windows服务的话下载win32binary。

     2.解压之后放在硬盘的目录下,如:

D:

\memcached.然后在运行中输入cmd进入命令行,进入到Memcached.exe所在的目录,例如:

D:

\memcached,然后输入:

Memcached–dinstall,即可完成安装。

         Memcached还有其他的一些常用的命令如下:

     -p监听的端口

     -l连接的IP地址,默认是本机

     -dstart启动memcached服务

     -drestart重起memcached服务

     -dstop|shutdown关闭正在运行的memcached服务

     -dinstall安装memcached服务

     -duninstall卸载memcached服务

     -u以的身份运行(仅在以root运行的时候有效)

     -m最大内存使用,单位MB。

默认64MB

     -M内存耗尽时返回错误,而不是删除项

     -c最大同时连接数,默认是1024

     -f块大小增长因子,默认是1.25

     -n最小分配空间,key+value+flags默认是48

     -h显示帮助

         按照上面的安装步骤安装之后,使用memcached–m200来调整最大内存占用之后会发现没有起作用,总是默认的64MB的内存,在网上搜了一下,原因是注册表中并没有写入信息,可以这样来修改。

        1.memcached–dshutdown首先关闭memcached服务。

        2.进入注册表,找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcachedServer,在其中有一个ImagePath项,值为"d:

\memcached\memcached.exe"-drunservice,在后面加上-l127.0.0.1-m3000-c2048。

       3.memcached–dstart启动memcached服务,这样就将memcached的最大内存修改为了3000MB。

       对Memcached缓存服务的状态查询,可以先telnet连接上服务:

telnet127.0.0.111211,然后使用stats命令查看缓存服务的状态,会返回如下的数据:

   

       time:

   1255537291                              服务器当前的unix时间戳

       total_items:

   54                                    从服务器启动以后存储的items总数量

       connection_structures:

   19                   服务器分配的连接构造数

       version:

   1.2.6                                       memcache版本

       limit_maxbytes:

   67108864                   分配给memcache的内存大小(字节)

       cmd_get:

   1645                                     get命令(获取)总请求次数

       evictions:

   0                                           为获取空闲内存而删除的items数(分配给memcache的空间用满后需

                                                                        要删除旧的items来得到空间分配给新的items)

       total_connections:

   19                          从服务器启动以后曾经打开过的连接数

       bytes:

   248723                                     当前服务器存储items占用的字节数

       threads:

   1                                            当前线程数

       get_misses:

   82                                     总未命中次数

       pointer_size:

   32                                   当前操作系统的指针大小(32位系统一般是32bit)

       bytes_read:

   490982                             总读取字节数(请求字节数)

       uptime:

   161                                          服务器已经运行的秒数

       curr_connections:

   18                            当前打开着的连接数

       pid:

   2816                                              memcache服务器的进程ID

       bytes_written:

   16517259                    总发送字节数(结果字节数)

       get_hits:

   1563                                     总命中次数

       cmd_set:

   54                                         set命令(保存)总请求次数

       curr_items:

   28                                      服务器当前存储的items数量

     二、在DiscuzNT3.0中配置Memcached服务

       在DiscuzNT3.0中配置Memcached服务较为简单,找到论坛根目录下的config目录,找到Memcached.config,打开,进行如下配置:

xmlversion="1.0"?

>

xsi="http:

//www.w3.org/2001/XMLSchema-instance"xmlns:

xsd="http:

//www.w3.org/2001/XMLSchema">

   

(1)

   

(2)

   DiscuzNT_MemCache

   3

   3

   5

   1000

   3000

   30

   true

   true

     

(1)处为"true”的时候表示DiscuzNT打开Memcached缓存功能,为"false”的时候表示关闭Memcached缓存功能。

     

(2)处填写Memcached服务器的IP地址+端口,例如:

127.0.0.1:

11211

  三、二次开发监控Memcached状态

      DiscuzNT的一个好处就是开源的,并且我们能够再上面很灵活的进行二次开发,这里,我们就以监控Memcached状态为例来做一个二次开发。

具体的步骤是:

     1.下载Memcached的.Net的开发包,下载地址是:

     2.在visualstudio2005或者2008中建立一个类库,例如命名为:

MyBBS.BBS.Plugin.MemcachedStats,然后在项目点击右键,选择属性,将默认命名空间修改为:

Discuz.Web,如图:

      

   3.将Memcached的.Net开发包解压,将将Commons.dll,ICSharpCode.SharpZipLib.dll,log4net.dll,Memcached.ClientLibrary.dll等放到bin目录,并且在项目中引用Memcached.ClientLibrary.dll.

   4.在项目中引用Discuz.Forum.

   5.在项目中增加类,命名为memcachedstats.cs.记得最好是小写,继承自Discuz.Forum.PageBase。

然后在类中overrideshowpage()函数,我们就可以在这里来写代码了,如下:

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Text;

usingSystem.Data;

usingSystem.Collections;

usingM=Memcached.ClientLibrary;

namespaceDiscuz.Web

{

   publicclassmemcachedstats:

Discuz.Forum.PageBase

   {

       publicstringMemcachedStatsOutput=string.Empty;

       protectedoverridevoidShowPage()

       {

           base.ShowPage();

           string[]servers={"此处填写Memcachedf服务IP+端口"};

           M.SockIOPoolpool=M.SockIOPool.GetInstance();

           pool.SetServers(servers);

           pool.InitConnections=3;

           pool.MinConnections=3;

           pool.MaxConnections=5;

           pool.SocketConnectTimeout=1000;

           pool.SocketTimeout=3000;

           pool.MaintenanceSleep=30;

           pool.Failover=true;

           pool.Nagle=false;

           pool.Initialize();

           this.pagetitle="MemcachedStats";

           M.MemcachedClientmc=newMemcached.ClientLibrary.MemcachedClient();

           StringBuildersb=newStringBuilder();

           Hashtableht=mc.Stats();

           sb.AppendLine("MemcachedStats:


");

           sb.AppendLine("_______________________________________
");

           foreach(DictionaryEntrydeinht)

           {

               Hashtableinfo=(Hashtable)de.Value;

               foreach(DictionaryEntryde2ininfo)

               {

                   sb.AppendLine(de2.Key.ToString()+":

    "+de2.Value.ToString()+"
");

               }

           }

           MemcachedStatsOutput=sb.ToString();

       }

   }

}

   这样我们就将代码完成了,我们将Memcached服务的状态信息保存到了MemcachedStatsOutput这个字段中了,那么我们怎么在页面上显示出来呢?

在进行下一步之前,编译输出MyBBS.BBS.Plugin.MemcachedStats.dll然后上传到论坛根目录的bin目录下。

   6.在论坛根目录下面的templete\default\中新建memcachedstats.htm,写入下面的代码:

<%template_header%>

   

   {config.forumtitle}»MemcachedStats

   

  

       

       

       

       

       

           MemcachedStats

           

           {MemcachedStatsOutput}

       

       

<%template_copyright%>

<%template_footer%>

    这里我们重点注意红色的部分,我们就是在这里来把我们上面的类库里面的MemcachedStatsOutput字段在这里输出的。

    7.进入论坛后台管理系统,点击“界面风格”——“模板管理”——“default”,这时我们就可以看到出现了memcachedstats这个模板了,勾中前面的复选框,然后选择“按选择的模板文件生成页面”。

    8.上面的工作完成之后,我们在浏览器中输入:

您的论坛地址\memcachedstats.aspx,就可以看到统计的Memcached服务的信息了,如图:

   

四、结束语与参考信息

     怎么样,还是很简单的吧,当然这里仅仅是做了最基本的开发了,不过相信这些弄清楚了,其它的开发就不是很复杂了,大家也都可以开发出自己更多丰富多彩的功能了。

    下面列出的是其他的一些参考资料,希望对大家有帮助:

    DiscuzNT界面模板的基本语法:

    Memcached的安装:

    网友编写的用php代码展示Memcached状态的代码:

•0Comments

memcached完全剖析–1.memcached的基础时间:

2009-06-1411:

00:

02来源:

网络作者:

未知点击:

177次

我是mixi株式会社开发部系统运营组的长野。

日常负责程序的运营。

从今天开始,将分几次针对最近在Web应用的可扩展性领域的热门话题memcached,与我公司开发部研究开发组的前坂一起,说明其内部结构和使用。

我是mixi株式会社开发部系统运营组的长野。

日常负责程序的运营。

从今天开始,将分几次针对最近在Web应用的可扩展性领域的热门话题memcached,与我公司开发部研究开发组的前坂一起,说明其内部结构和使用。

memcached是什么?

memcached的特征

协议简单

基于libevent的事件处理

内置内存存储方式

memcached不互相通信的分布式

安装memcached

memcached的安装

memcached的启动

用客户端连接

使用Cache:

:

Memcached

使用Cache:

:

Memcached连接memcached

保存数据

获取数据

删除数据

增一和减一操作

总结

memcached是什么?

memcached是以LiveJournal旗下DangaInteractive公司的BradFitzpatric为首开发的一款软件。

现在已成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。

许多Web应用都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示。

但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、网站显示延迟等重大影响。

这时就该memcached大显身手了。

memcached是高性能的分布式内存缓存服务器。

一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。

图1一般情况下memcached的用途

memcached的特征

memcached作为高速运行的分布式缓存服务器,具有以下的特点。

协议简单

基于libevent的事件处理

内置内存存储方式

memcached不互相通信的分布式

协议简单

memcached的服务器客户端通信并不使用复杂的XML等格式,而使用简单的基于文本行的协议。

因此,通过telnet也能在memcached上保存数据、取得数据。

下面是例子。

$telnetlocalhost11211

Trying127.0.0.1...

Connectedtolocalhost.localdomain(127.0.0.1).

Escapecharacteris'^]'.

setfoo003    (保存命令)

bar              (数据)

STORED           (结果)

getfoo          (取得命令)

VALUEfoo03    (数据)

bar              (数据)协议文档位于memcached的源代码内,也可以参考以下的URL。

基于libevent的事件处理

libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能封装成统一的接口。

即使对服务器的连接数增加,也能发挥O

(1)的性能。

memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能。

关于事件处理这里就不再详细介绍,可以参考DanKegel的TheC10KProblem。

libevent:

http:

//www.monkey.org/~provos/libevent/

TheC10KProblem:

内置内存存储方式

为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。

由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。

另外,内容容量达到指定值之后,就基于LRU(LeastRecentlyUsed)算法自动删除不使用的缓存。

memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。

关于内存存储的详细信息,本连载的第二讲以后前坂会进行介绍,请届时参考。

memcached不互相通信的分布式

memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。

各个memcached不会互相通信以共享信息。

那么,怎样进行分布式呢?

这完全取决于客户端的实现。

本连载也将介绍memcached的分布式。

图2memcached的分布式

接下来简单介绍一下memcached的使用方法。

安装memcached

memcached的安装比较简单,这

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1