Memcached入门

               今天北京下好大的雨,现在还在下,在养殖贴吧看到现在,又浪费了这多时间。

      我这里讲的是在Windows环境下安装Memcached。首先是要在自己的电脑上安装Memcached,这个我就不多说了,这里有一篇百度经验的文章讲的很详细了,链接地址:http://jingyan.baidu.com/article/5225f26b7ef644e6fb09087a.html。我就是照着上面的来安装的。安装完成后你需要知道你有没有安装完成。这里有一点是百度经验没有讲到的,当你将memcached安装完成后一定要记得打开Telnet服务,不然你安装memcached时没有效果的。这里又有一篇百度经验叫你如何开启Telenet服务,链接地址是:http://jingyan.baidu.com/article/b24f6c82e7b1f886bfe5da8a.html。当你开启了Telnet服务后,你可以在cmd中做下面一些操作

1.先输入telnet 127.0.0.1 11211



2.按回车键,进入到下面的页面,并输入stats,它会显示memcached的一些基本信息



3.下面输入这样的一些命令

set first 0 0 5

abcde

这条命令是将abcde这个字符串给存入到缓存中

get first   这条命令是获取key值为first的value,这样就可以取出abdce了

delete first 就是将这对键值对给从memcached中删除


我们再来好好看看set first 0 0 5中的0,0,5代表着什么含义

参数用法
keykey 用于查找缓存值
flags可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息
expiration time在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
bytes在缓存中存储的字节点
value存储的值(始终位于第二行)
first对应的是key 第一个0对应的是flags.第二个0对应的是保存多长时间,5对应的是要存入到memcached中的字节长度,abcde是对应的value,需要注意的这里value要换行输入。

大家还可以输入

stats items

stats cachedump 10

下面的一篇文章对这个讲解的很详细,如果感兴趣的可以看看:http://blog.csdn.net/zzulp/article/details/7823511


在安装好memcached后,就要写代码了。我这里只介绍一种,还有一种alisoft就不介绍了。

依赖的jar包有四个,下载链接:http://download.csdn.net/detail/lixld/7252419



代码

package com.wangbiao.memcached;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;
import com.wangbiao.pojo.Student;

public class MemcachedTest {
	public static void main(String[] args) {  
	   MemCachedClient client = getMemCachedClient();  
	       
	   //*************将字符串放入缓存 *************** 
	   Date date=new Date(System.currentTimeMillis()+20000);
	   System.out.println("memcached中存入字符串:"+date.toString());
	   client.set("test2","测试2");  
	   String test2 =(String)client.get("test2");  
	   System.out.println("memcached中存入字符串:"+test2);
	   //***********将字符串放入缓存,并设置失效时间  **********
	   client.set("test1","testfirst", date);  
	   client.delete("test1");
	   String str =(String)client.get("test1");  
	   System.out.println("memcached中存入字符串,设置缓存时间:"+str);                 
	   //**********将对象放入缓存*********************      
	    Student student = new Student();
	    student.setName("wangbiao");
	    student.setAge(26);
	    student.setSchool("三合中学");
	    client.set("student", student);
	    Student s = (Student)client.get("student");
	    System.out.println("memcached中存入对象:"+s.toString());
	   //**********List对象存入缓存*********************  
	    Student zhangsan = new Student("张三",22,"应城一中");
	    Student lisi = new Student("李四",21,"应城二中");
	    Student wangwu = new Student("王五",22,"应城三中");
	    List<Student> list = new ArrayList<Student>();
	    list.add(zhangsan);
	    list.add(lisi);
	    list.add(wangwu);
	    client.set("list", list);
	    List studentList = (List)client.get("list");
	    for(Student studentErr:list){
	    	System.out.println("memcached中存入List:"+studentErr.toString());
	    }
	  }
	
	public static MemCachedClient getMemCachedClient(){
		MemCachedClient client=new MemCachedClient();
		//服务器列表及其权重
        String [] addr ={"127.0.0.1:11211"};  
        Integer [] weights = {3};
        //获取连接池的实例
        SockIOPool pool = SockIOPool.getInstance();
        //设置服务器信息
        pool.setServers(addr);  
        pool.setWeights(weights);
        //设置初始连接数、最小连接数、最大连接数、最大处理时间
        pool.setInitConn(5);  
        pool.setMinConn(5);  
        pool.setMaxConn(200);  
        pool.setMaxIdle(1000*30*30);
        //设置连接池守护线程的睡眠时间
        pool.setMaintSleep(30);  
        pool.setNagle(false);  
        pool.setSocketTO(30);  
        pool.setSocketConnectTO(0);
        //初始化并启动连接池
        pool.initialize();  
        return client;
	}
	    
	  
}


package com.wangbiao.pojo;

import java.io.Serializable;

public class Student implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	private String name;
	private int age;
	private String school;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getSchool() {
		return school;
	}
	public void setSchool(String school) {
		this.school = school;
	}
		
	@Override
	public String toString() {
		return "Student [name=" + name + ", age=" + age + ", school=" + school
				+ "]";
	}
	public Student(String name, int age, String school) {
		super();
		this.name = name;
		this.age = age;
		this.school = school;
	}
	public Student(){
		
	}
}


最后输出:

memcached中存入字符串:Wed Jul 20 20:39:50 CST 2016
memcached中存入字符串:测试2
memcached中存入字符串,设置缓存时间:null
memcached中存入对象:Student [name=wangbiao, age=26, school=三合中学]
memcached中存入List:Student [name=张三, age=22, school=应城一中]
memcached中存入List:Student [name=李四, age=21, school=应城二中]
memcached中存入List:Student [name=王五, age=22, school=应城三中]

在这里需要说明一点的是memcached存储对象的时候,这一个类是一定要被序列号的,即实现Serializable接口,以前以为memcached只能存储字符串,没想到memcached还是可以存储对象的。

参考文章:http://uule.iteye.com/blog/2142890

这些东西虽然很基础,但毕竟又学到了一点,可以说自己会用memcached了,不要把时间浪费在一些无关紧要的事情上,离自己的目标还很远,加油。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值