Memcache学习笔记(1)——Windows下安装Memcache服务器——java下调用MemcacheClient测试类Demo...

    之前接触过的很多系统都有用到缓存,因为一直也不需要怎么取修改,所以关于缓存一块,很少去关注。最近抽了点时间,来看看缓存相关的东东。

    看了些关于Memcache的文章,只是了解到它是在内存里维护着一个很大的键值对的hashMap表类的东西,在系统里使用了它,就可以把一些经常要用到,又很少有改动的东西存在里边,方便用户访问。也就是说,系统在使用过程中,访问的数据可以先去内存中去找,如果存在则直接读内存里的 东西,不存在的情况才去连接数据库查询。这点可以很大程度上避开频繁的数据库连接操作,对系统的性能提升还是相当明显的。

    好了,现在开始。。。。

    1、首先是在Windows下安装Memcache服务器。

         因为现在我用的系统是Windows的,除了之前在学校的时候使用linux/Windows双系统,现在工作生活很少真正的去使用linux了(这点自我觉得应该要改),所以先整了个Windows下安装Memcache服务器来进行学习,这样虚拟机也不需要安装了。

         下载安装文件。我找了不少,终于找到了,这里我使用的版本是  memcached-win64-1.4.4-14     64位的  ,下载地址如下:

                 http://www.2cto.com/uploadfile/2012/0713/20120713110308123.zip 

         将下载下来的压缩包解压,将memcached目录放在你指定的目录下,

         然后打开cmd命令行窗口(XP之后的系统,一定要用管理员身份打开),cd到刚刚说的memcached目录下,输入命令:memcached.exe -d install   安装Memcache服务器,再输入命令:memcached.exe -d start,启动服务。这时,在任务栏就能看到memcached的服务了。

      

C:\Windows\system32>D:

D:\>cd D:\software\memcached

D:\software\memcached>memcached.exe -d install

D:\software\memcached>memcached.exe -d start

  

          

   

   2、下载java使用MemcacheClient的jar包,很多版本,自己选一个就是,链接:  http://cn.jarfire.org/memcached.html

   3、建一个demo小工程,引入刚刚下载的jar包,在引入log4j-1.2.16.jar,工程的结构目录自己设计,我习惯弄成这样:

  

   4、自己写一个调用Memcached的测试类即可进行测试:(这段测试代码是拿过来用的)

 

package memcache.demo;

import java.util.Date;

import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;

public class Demo {

    protected static MemCachedClient mcc = new MemCachedClient();       
    
    static {       
        String[] servers ={"127.0.0.1:11211"};     //Memcache默认的端口11211  
       
        Integer[] weights = { 3 };       
       
        //创建一个实例对象SockIOPool      
        SockIOPool pool = SockIOPool.getInstance();       
         
        //设置SockIOPool相关信息     
        pool.setServers( servers );       
        pool.setWeights( weights );       
            
        pool.setInitConn( 5 );       
        pool.setMinConn( 5 );       
        pool.setMaxConn( 250 );       
        pool.setMaxIdle( 1000 * 60 * 60 * 6 );       
       
        // set the sleep for the maint thread        
        // it will wake up every x seconds and        
        // maintain the pool size        
       pool.setMaintSleep( 30 );       
       
//        Tcp的规则就是在发送一个包之前,本地机器会等待远程主机     
//        对上一次发送的包的确认信息到来;这个方法就可以关闭套接字的缓存,     
//        以至这个包准备好了就发;     
        pool.setNagle( false );       
        //连接建立后对超时的控制     
        pool.setSocketTO( 3000 );    
        //连接建立时对超时的控制     
        pool.setSocketConnectTO( 0 );       
       
        // initialize the connection pool        
        //初始化一些值并与MemcachedServer段建立连接     
        pool.initialize();    
               
       
        // lets set some compression on for the client        
        // compress anything larger than 64k        
        mcc.setCompressEnable( true );       
        mcc.setCompressThreshold( 64 * 1024 );       
    }       
           
    public static void bulidCache(){       
        //set(key,value,Date) ,Date是一个过期时间,如果想让这个过期时间生效的话,这里传递的new Date(long date) 中参数date,需要是个大于或等于1000的值。     
        //因为java client的实现源码里是这样实现的 expiry.getTime() / 1000 ,也就是说,如果 小于1000的值,除以1000以后都是0,即永不过期     
        mcc.set( "test", "This is a test String" ,new Date(10000));   //十秒后过期     
              
    }       
      
    public static void output() {       
        //从cache里取值     
        String value = (String) mcc.get( "test" );       
        System.out.println(value);        
    }       
          
    public static void main(String[] args){       
        bulidCache();       
        output();           
    } 
}

  控制台输出 This is a test String 说明访问Memcache服务器成功了。

 

 

另外,看到一篇文章,说阿里大神写了个开源的Memcache框架- -,不过提供的链接看不到源码,有机会学习学习怎么使用。文章地址:

  http://stephen830.iteye.com/blog/2112439

 

还有,关于Memcache和Memcached的区别,一个是项目名称,一个是程序名称,有篇文章讲的很详细,文章地址:

  http://nhy520.iteye.com/blog/1775893/

 

 

 

 

 

  

 

转载于:https://www.cnblogs.com/sunny20082870/p/5687680.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值