memcache学习

1、安装

Linux环境下安装

1--安装libevent

#tar zvxf libevent-2.0.13-stable.tar.gz 

#cd libevent-2.0.13-stable 

#./configure --prefix=/usr 

#make 

#make install

--检查是否成功

# ls -al /usr/lib | grep libevent 

2--安装memcached

#tar zxvf memcached-1.4.0.tar.gz 

#cd memcached-1.4.0 

# ./configure --with-libevent=/usr  

# make 

# make install

--检查是否成功

root@yang-desktop:~$ ls -la /usr/local/bin/*mem* 

-rwxr-xr-x 1 root root 257899 2011-09-18 18:10/usr/local/bin/memcached 

3--启动memcached

/usr/local/bin/memcached -d -m 100 -u root -l 127.0.0.1-p 11211 -c 256

【说明】

-d:启动一个守护进程,

-m:分配给Memcache使用的内存数量,单位是MB,默认是64MB

-u:运行Memcache的用户

-l:监听的服务器IP地址,127.0.0.1 ip地址,多个间隔用逗号

-p:设置Memcache监听的端口,默认是11211注:-p(p为小写)

-c:设置最大并发连接数,默认是1024

-h 显示帮助

4--关闭memcached

killall memcached

windows环境下安装

1   下载memcached-1.2.6-win32-bin.zip,地址为:

http://code.jellycan.com/memcached/

2   cmd命令运行memcached.exe -d install

3  cmd命令net start "memcached Server",打开任务管理器可以看见memcached.exe的进程.

4   F:/php/mem/memcached.exe -d start

指定内存划分-m 200 ,IP监听 -l 192.168.1.*,端口号-p 11211等

5   验证安装成功:进入telnet localhost 11211

6   进入. 输入version查看版本,输入stats查看状态

 

2、示例代码

使用Memcache客户端需要依赖的第三方类库:

commons-logging-1.0.4.jar or highversion

log4j-1.2.12.jar or high version

codehaus/woodstox/wstx-asl-3.2.1.jaror high version

 codehaus/staxapi/stax-api-1.0.1.jaror high version

 

基础配置文件:   

    <?xml version="1.0"encoding="UTF-8"?>

<memcached>   

    <client name="mclient1"compressEnable="true" defaultEncoding="UTF-8"socketpool="pool0">       <errorHandler>com.alisoft.xplatform.asf.cache.memcached.MemcachedErrorHandler</errorHandler>

    </client>   

    <socketpool name="pool0"failover="true" initConn="5" minConn="5"maxConn="250" maintSleep="0"

        nagle="false"socketTO="3000" aliveCheck="true">

       <servers>127.0.0.1:11211</servers>

    </socketpool> 

    <cluster name="cluster1">

       <memCachedClients>mclient1</memCachedClients>

    </cluster>               

</memcached>

1.       创建memcached的标签。

2.       创建 client的标签。

注意:

name 属性是程序中使用Cache的唯一标识。

socketpool 属性将会关联到后面的socketpool配置。

errorHandler 可选,用来处理出错情况。注意在Tag中不要使用空格或者Tab键。

3.       创建socketpool的标签。

注意:

name 属性和client 配置中的socketpool 属性相关联。

maintSleep属性是后台线程管理SocketIO池的检查间隔时间,如果设置为0,则表明不需要后台线程维护SocketIO线程池,默认需要管理。

socketTO 属性是Socket操作超时配置,单位ms

aliveCheck 属性表示在使用Socket以前是否先检查Socket状态。

4.       创建 servers 标签作为socketPool的子标签.设置memcache服务端实例地址,支持多个地址设置,例如“127.0.0.1” “127.0.0.1:11211, 127.0.0.1:11212”.

5.       创建 weights 标签作为socketPool的子标签(可选),它表明了上面设置的服务器实例的Load权重. 例如<weights>3,7</weights> 表示30% load 127.0.0.1:11211, 70% load 127.0.0.1:11212

客户端

简单使用:

         public void test()

     {

         ICacheManager<IMemcachedCache>manager;

manager =CacheUtil.getCacheManager(IMemcachedCache.class,

              MemcachedCacheManager.class.getName());

         manager.setConfigFile("memcached1.xml");//可以指定配置文件名

         manager.start();

         try

{   

IMemcachedCache cache = manager.getCache("mclient");

cache.put("key","value");

org.junit.Assert.assertEquals(cache.get("key"),"value");

         }

                   Finally{ manager.stop();}

}

      注意:

       Cache Manger 不要创建多个,一个实例就可以满足应用的需求,它会负责创建和初始化所有配置在Classpath下配置文件中的客户端, Cache Manager 也可以由开发者自己实现,只需要在你的jar中META-INF/services 目录里建立文件名为“com.alisoft.xplatform.asf.cache.ICacheManager”的文件,然后将将实现类全路径写在这个文件中即可,框架将会自动载入。

       Cache Manger start 表示初始化所有的配置过的客户端,stop 表示释放Cache Pool中客户端的资源。

结合本地Cache使用 Memcache:

publicvoid test()

      {

           ICacheManager<IMemcachedCache> manager;

manager =CacheUtil.getCacheManager(IMemcachedCache.class,

                 MemcachedCacheManager.class.getName());

           manager.start();

           try

{    

IMemcachedCache cache =manager.getCache("mclient");

cache.put("key", "value");

org.junit.Assert.assertEquals(cache.get("key",5),"value");

           }

Finally{ manager.stop();}

}

 

       使用本地Cache结合Memcache,可以极大提高程序的执行效率,因为Memcache还是会在网络交互中损耗,因此将数据根据敏感程度在本地也作有效时间缓存可以提高效率。       Cache.get(“key”,5)表示首先从本地缓存获取”key”的值,如果存在立即返回,如果不存在,则查询Memcache,当Memcache获取到此数据,则将该数据缓存在本地缓存,并且设置有效期为5秒钟后失效。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值