今天北京下好大的雨,现在还在下,在养殖贴吧看到现在,又浪费了这多时间。
我这里讲的是在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代表着什么含义
参数 | 用法 |
---|---|
key | key 用于查找缓存值 |
flags | 可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息 |
expiration time | 在缓存中保存键值对的时间长度(以秒为单位,0 表示永远) |
bytes | 在缓存中存储的字节点 |
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了,不要把时间浪费在一些无关紧要的事情上,离自己的目标还很远,加油。