memcachedWord格式文档下载.docx
《memcachedWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《memcachedWord格式文档下载.docx(30页珍藏版)》请在冰豆网上搜索。
具体原创不详。
2)依赖的jar
A.commons-pool-1.5.6.jar
B.java_memcached-release_2.6.3.jar
C.slf4j-api-1.6.1.jar
D.slf4j-simple-1.6.1.jar
2.alisoft-xplatform-asf-cache-2.5.1
这个东东是阿里软件的架构师岑文初进行封装的。
里面的注释都是中文的,比较好。
A.alisoft-xplatform-asf-cache-2.5.1.jar
B.commons-logging-1.0.4.jar
C.hessian-3.0.1.jar
D.log4j-1.2.9.jar
E.stax-api-1.0.1.jar
F.wstx-asl-2.0.2.jar
六、范例
1.基于java_memcached-release_2.6.3
Java代码
1.package
com.hl.memcached.cache;
2.
3.import
java.util.Date;
4.
5.import
com.danga.MemCached.MemCachedClient;
6.import
com.danga.MemCached.SockIOPool;
7.
8.public
class
MyCache
{
9.
public
static
void
main(String[]
args)
10.
MemCachedClient
client=new
MemCachedClient();
11.
String
[]
addr
={"
127.0.0.1:
11211"
};
12.
Integer
weights
=
{3};
13.
SockIOPool
pool
SockIOPool.getInstance();
14.
pool.setServers(addr);
15.
pool.setWeights(weights);
16.
pool.setInitConn(5);
17.
pool.setMinConn(5);
18.
pool.setMaxConn(200);
19.
pool.setMaxIdle(1000*30*30);
20.
pool.setMaintSleep(30);
21.
pool.setNagle(false);
22.
pool.setSocketTO(30);
23.
pool.setSocketConnectTO(0);
24.
pool.initialize();
25.
26.//
s
=pool.getServers();
27.
client.setCompressEnable(true);
28.
client.setCompressThreshold(1000*1024);
29.
30.//
将数据放入缓存
31.
client.set("
test2"
"
);
32.
33.//
将数据放入缓存,并设置失效时间
34.
Date
date=new
Date(2000000);
35.
test1"
date);
36.
37.//
删除缓存数据
38.//
client.delete("
39.
40.//
获取缓存数据
41.
str
=(String)client.get("
42.
System.out.println(str);
43.
}
44.}
packagecom.hl.memcached.cache;
importjava.util.Date;
importcom.danga.MemCached.MemCachedClient;
importcom.danga.MemCached.SockIOPool;
publicclassMyCache{
publicstaticvoidmain(String[]args){
MemCachedClientclient=newMemCachedClient();
String[]addr={"
Integer[]weights={3};
SockIOPoolpool=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();
//String[]s=pool.getServers();
client.setCompressEnable(true);
client.setCompressThreshold(1000*1024);
//将数据放入缓存
client.set("
//将数据放入缓存,并设置失效时间
Datedate=newDate(2000000);
date);
//删除缓存数据
//client.delete("
//获取缓存数据
Stringstr=(String)client.get("
System.out.println(str);
}
}
2.
基于alisoft-xplatform-asf-cache-2.5.1
1)
配置memcached.xml
Xml代码
1.<
?
xml
version="
1.0"
encoding="
UTF-8"
>
2.<
memcached>
3.
<
!
--
name
属性是程序中使用Cache的唯一标识;
socketpool
属性将会关联到后面的socketpool配置;
-->
client
name="
mclient_0"
compressEnable="
true"
defaultEncoding="
5.
socketpool="
pool_0"
6.
可选,用来处理出错情况
errorHandler>
com.alisoft.xplatform.asf.cache.memcached.MemcachedErrorHandler
8.
/errorHandler>
/client>
--
属性和client
配置中的socketpool
属性相关联。
maintSleep属性是后台线程管理SocketIO池的检查间隔时间,如果设置为0,则表明不需要后台线程维护SocketIO线程池,默认需要管理。
socketTO
属性是Socket操作超时配置,单位ms。
aliveCheck
属性表示在使用Socket以前是否先检查Socket状态。
maintSleep="
5000"
socketTO="
3000"
failover="
aliveCheck="
initConn="
5"
minConn="
maxConn="
250"
nagle="
false"
设置memcache服务端实例地址.多个地址用"
隔开
servers>
11211<
/servers>
可选配置。
表明了上面设置的服务器实例的Load权重.
例如
weights>
3,7<
/weights>
表示30%
load
在
10.2.224.36:
33001,
70%
在
10.2.224.46:
33001
26.
/socketpool>
29.<
/memcached>
xmlversion="
encoding="
<
--name属性是程序中使用Cache的唯一标识;
socketpool属性将会关联到后面的socketpool配置;
-->
clientname="
compressEnable="
defaultEncoding="
socketpool="
<
--可选,用来处理出错情况-->
com.alisoft.xplatform.asf.cache.memcached.MemcachedErrorHandler
--
name属性和client配置中的socketpool属性相关联。
maintSleep属性是后台线程管理SocketIO池的检查间隔时间,如果设置为0,则表明不需要后台线程维护SocketIO线程池,默认需要管理。
socketTO属性是Socket操作超时配置,单位ms。
aliveCheck
属性表示在使用Socket以前是否先检查Socket状态。
socketpoolname="
maintSleep="
socketTO="
failover="
aliveCheck="
initConn="
minConn="
maxConn="
nagle="
--设置memcache服务端实例地址.多个地址用"
隔开-->
可选配置。
表明了上面设置的服务器实例的Load权重.例如<
表示30%load在
10.2.224.36:
33001,70%load在10.2.224.46:
33001
-->
2)
测试类
com.hl.memcached.client.test;
java.util.ArrayList;
4.import
java.util.List;
com.alisoft.xplatform.asf.cache.ICacheManager;
7.import
com.alisoft.xplatform.asf.cache.IMemcachedCache;
8.import
com.alisoft.xplatform.asf.cache.memcached.CacheUtil;
9.import
com.alisoft.xplatform.asf.cache.memcached.MemcachedCacheManager;
10.import
com.hl.memcached.cache.client.TestBean;
12.public
ClientTest
@SuppressWarnings("
unchecked"
)
ICacheManager<
IMemcachedCache>
manager;
manager
CacheUtil.getCacheManager(IMemcachedCache.class,
MemcachedCacheManager.class.getName());
manager.setConfigFile("
memcached.xml"
manager.start();
try
IMemcachedCache
cache
manager.getCache("
cache.put("
key"
"
value"
System.out.println(cache.get("
));
}
finally
manager.stop();
30.}
packagecom.hl.memcached.client.test;
importjava.util.ArrayList;
importjava.util.List;
importcom.alisoft.xplatform.asf.cache.ICacheManager;
importcom.alisoft.xplatform.asf.cache.IMemcachedCache;
importcom.alisoft.xplatform.asf.cache.memcached.CacheUtil;
importcom.alisoft.xplatform.asf.cache.memcached.MemcachedCacheManager;
importcom.hl.memcached.cache.client.TestBean;
publicclassClientTest{
@SuppressWarnings("
)
ICacheManager<
manager;
manager=CacheUtil.getCacheManager(IMemcachedCache.class,
MemcachedCacheManager.class.getName());
manager.setConfigFile("
manager.start();
try{
IMemcachedCachecache=manager.getCache("
cache.put("
"
System.out.println(cache.get("
}finally{
manager.stop();
}
七、使用memcached缓存javabean自定义对象
Memcached可以缓存String,也可以缓存自定义javabean。
但必须是可序列化的javabean(implementsSerializable即可)
1.
基于java_memcached-release_2.6.3
测试用javabean
com.hl.memcached.cache.client;
java.io.Serializable;
5.public
TestBean
implements
Serializable{
private
final
long
serialVersionUID
5344571864700659321L;
name;
age;
//get、set方法略
11.}
packagecom.hl.memcached.cache.client;
importjava.io.Serializable;
publicclassTestBeanimplementsSerializable{
privatestaticfinallongserialVersionUID=5344571864700659321L;
privateStringname;
privateIntegerage;
//get、set方法略
MyCache.java代码
pool.setInitConn(5)