我们在项目开发中使用memcache一般是服务器端和客户端。服务器端主要是安装memcache的安装文件,分windows和linux版本的,安装好运行即可。客户端主要是在代码中去实现memcache的存取和取值。
在这里我们开发的主要是关心客户端的使用,主要代码如下:
1、首先要建立一个管理memcache的类
package com.alisoft.sme.memcached;
import java.util.Date;
import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;
public class MemCachedManager {
// 创建全局的唯一实例
protected static MemCachedClient mcc = new MemCachedClient();
protected static MemCachedManager memCachedManager = new MemCachedManager();
// 设置与缓存服务器的连接池
static {
// 服务器列表和其权重
String[] servers = { "127.0.0.1:11211" };
Integer[] weights = { 3 };
// 获取socke连接池的实例对象
SockIOPool pool = SockIOPool.getInstance();
// 设置服务器信息
pool.setServers(servers);
pool.setWeights(weights);
// 设置初始连接数、最小和最大连接数以及最大处理时间
pool.setInitConn(5);
pool.setMinConn(5);
pool.setMaxConn(250);
//这里我们可以设置最大处理时间是12小时,这个根据项目需要来设置
pool.setMaxIdle(1000 * 60 * 60 * 12);
// 设置主线程的睡眠时间
pool.setMaintSleep(30);
// 设置TCP的参数,连接超时等
pool.setNagle(false);
pool.setSocketTO(3000);
pool.setSocketConnectTO(0);
// 初始化连接池
pool.initialize();
// 压缩设置,超过指定大小(单位为K)的数据都会被压缩
mcc.setCompressEnable(true);
mcc.setCompressThreshold(64 * 1024);
}
/**
* 保护型构造方法,不允许实例化!
*
*/
protected MemCachedManager() {
}
/**
* 获取唯一实例.
*
* @return
*/
public static MemCachedManager getInstance() {
return memCachedManager;
}
/**
* 添加一个指定的值到缓存中.
*
* @param key
* @param value
* @return
*/
public boolean add(String key, Object value) {
return mcc.add(key, value);
}
public boolean add(String key, Object value, Date expiry) {
return mcc.add(key, value, expiry);
}
public boolean replace(String key, Object value) {
return mcc.replace(key, value);
}
public boolean replace(String key, Object value, Date expiry) {
return mcc.replace(key, value, expiry);
}
/**
* 根据指定的关键字获取对象.
*
* @param key
* @return
*/
public Object get(String key) {
return mcc.get(key);
}
public static void main(String[] args) {
MemCachedManager cache = MemCachedManager.getInstance();
cache.add("username", "lebron");
System.out.print("get value : " + cache.get("username"));
}
}
2、建立缓存数据的pojo,这里一定要是可序列化,这是memcache底层缓存技术实现的原因
package com.alisoft.sme.memcached;
import java.io.Serializable;
public class TBean implements Serializable {
//随机生成的序列号
private static final long serialVersionUID = 1945562032261336919L;
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
3、代码测试
</SPAN></SPAN>
<PRE class=java name="code"> </PRE>
</H1>
<H2 style="MARGIN: 13pt 0cm 13pt 28.8pt"><SPAN lang=EN-US><SPAN><SPAN> </SPAN></SPAN></SPAN><SPAN><SPAN style="FONT-SIZE: large">创建测试用例</SPAN></SPAN></H2>
<H2 style="MARGIN: 13pt 0cm 13pt 28.8pt"> </H2>
<PRE class=java name="code">package com.alisoft.sme.memcached.test;
import junit.framework.TestCase;
import org.junit.Test;
import com.alisoft.sme.memcached.MemCachedManager;
import com.alisoft.sme.memcached.TBean;
public class TestMemcached extends TestCase {
private static MemCachedManager cache;
@Test
public void testCache() {
TBean tb = new TBean();
tb.setName("章黎");
cache.add("bean", tb);
TBean tb1 = (TBean) cache.get("bean");
System.out.println("name=" + tb1.getName());
tb1.setName("勒布朗");
tb1 = (TBean) cache.get("bean");
System.out.println("name=" + tb1.getName());
}
@Override
protected void setUp() throws Exception {
super.setUp();
cache = MemCachedManager.getInstance();
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
cache = null;
}
}
</PRE>
<H2 style="MARGIN: 13pt 0cm 13pt 28.8pt"> <SPAN>测试结果</SPAN></H2>
<H2 style="MARGIN: 13pt 0cm 13pt 28.8pt"><SPAN>
<PRE class=java name="code">[INFO] ++++ serializing for key: bean for class: com.alisoft.sme.memcached.TBean
[INFO] ++++ memcache cmd (result code): add bean 8 0 93 (NOT_STORED)
[INFO] ++++ data not stored in cache for key: bean
[INFO] ++++ deserializing class com.alisoft.sme.memcached.TBean
name=章黎[INFO] ++++ deserializing class com.alisoft.sme.memcached.TBean
name=章黎</PRE>
</SPAN></H2>
这里实现起来还是很简单的,在项目中,我们大概的做法就是:第一次请求是去数据库中找,返回数据时同时将数据缓存到memcache中,以后每次都是先到memcache中去取数据,如果memcache中没有数据,我们再到数据库中去拿数据,拿到后再放到memcache中。
分享到:
相关推荐
memcache配置源代码
C语言memcache代码文档C语言memcache代码文档C语言memcache代码文档C语言memcache代码文档C语言memcache代码文档C语言memcache代码文档C语言memcache代码文档
C语言memcache代码C语言memcache代码C语言memcache代码C语言memcache代码C语言memcache代码C语言memcache代码C语言memcache代码C语言memcache代码
介绍:memcache缓存的一个项目。只是简单的增删盖查。 使用前,应该先安装memcache。如果是window上就不需要安装libevent, linux上需要安装libevent。具体安装请到资料中查找。 memcache客户端:xmemcached-2.0.0...
Memcache是danga的一个项目,最早是为LiveJournal服务的,最初为了加速LiveJournal访问速度而开发的,后来被很多大型的网站采用。 使用Memcache的网站一般流量都是比较大的,为了缓解数据库的压力,让Memcache作为一...
C语言memcache代码C语言memcache代码C语言memcache代码C语言memcache代码C语言memcache代码C语言memcache代码
memcache介绍及客户端与服务端开发实例
memcache 范例 附源代码 缓存 超级不错的缓存解决方案
Windows Memcache 安装 dotnet 使用实例及动态库
memcached的源代码.zip
最为高效的java遍历Memcache详细代码
Laravel开发-memcache Laravel 5的Memcache驱动程序
Java开发中的Memcache原理及实现
memcache也有一款图形界面的监控工具(memcachephp),可以通过这个工具查看到局域网内所有部署memcache机器或者端口的memcache的运行情况,对我们监控memcache的缓存命中率、cache利用率、点击率等信息有很好的帮助...
memcached 源代码分析,出自社区大咖,货真价实,值得信赖。
memcache是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的、需要频繁访问数据库的网站访问。
memcache图形监控工具phpmemcache,尽是一个PHP文件就可以实现对memcache的监控。 使用方法:本地测试监控机安装Apache或者下载XAMPP(Apache+MySQL+PHP+PERL),安装后把memcachephp.zip中的memcache.php文件放到...
windows下memcache安装包 附带php扩展包
memcache win8 x64 php5.4.7 测试通过(开发套件 xampp 1.8.1) 配置如下: 1、开启memcached 服务,注意路径 memcached.exe -d install(安装) memcached.exe -d start(自动启动) 2、调整 php.ini 增加如下...
memCache 源码 java客户端.实例