一个例子
官方网站 http://www.whalin.com/memcached/
==============
假设我们有3台memcached 服务器,server1 和server2 有3GB 的内存空间,server3 有2GB 的内存空间.下面程序说明怎么来创建客户端.
import com.danga.MemCached.*;
public class MyClass {
protected static MemCachedClient mcc = new MemCachedClient();
static
{ String[] servers =
{ "server1.mydomain.com:1121","server2.mydomain.com:1121", "server3.mydomain.com:1121" };
Integer[] weights ={ 3, 3, 2 };
SockIOPool pool = SockIOPool.getInstance();
pool.setServers( servers );
pool.setWeights( weights );
pool.setInitConn( 5 );
pool.setMinConn( 5 );
pool.setMaxConn( 250 );
pool.setMaxIdle( 1000 * 60 * 60 * 6 );
pool.setMaintSleep( 30 );
pool.setNagle( false );
pool.setSocketTO( 3000 );
pool.setSocketConnectTO( 0 );
pool.initialize();
mcc.setCompressEnable( true );
mcc.setCompressThreshold( 64 * 1024 );
}
public static void examples() {
mcc.set( "foo", "This is a test String" );
String bar = mcc.get( "foo" );
}
}
MemCachedClient 类 常用的方法说明
创建 client对象 设置参数:
MemCachedClient mc = new MemCachedClient();
//压缩模式
mc.setCompressEnable(true);
// 如果 cache数据 大于4 KB 就启用压缩
mc.setCompressThreshold(4096);
// 基本类型tostring方法
// 通常不需要设置
mc.setPrimitiveAsString(true);
存储一个对象:
MemCachedClient mc = new MemCachedClient();
String key = "cacheKey1";
Object value = SomeClass.getObject();
mc.set(key, value);
用客户端hashcode 存储一个对象:
MemCachedClient mc = new MemCachedClient();
String key = "cacheKey1";
Object value = SomeClass.getObject();
Integer hash = new Integer(45);
mc.set(key, value, hash);
set方法:在cache中存储一个指定对象
add 和replace 方法功能差不多
add -- 如果不存在 这个key的对象,将会存储一个对象到cache中
replace --只有当存在指定key对象的时候 会覆盖已有对象
删除一个对象:
MemCachedClient mc = new MemCachedClient();
String key = "cacheKey1";
mc.delete(key);
结合hashcode 删除一个对象:
MemCachedClient mc = new MemCachedClient();
String key = "cacheKey1";
Integer hash = new Integer(45);
mc.delete(key, hashCode);
怎么cache计数,增 减计数:
MemCachedClient mc = new MemCachedClient();
String key = "counterKey";
mc.storeCounter(key, new Integer(100));
System.out.println("counter after adding 1: " mc.incr(key));
System.out.println("counter after adding 5: " mc.incr(key, 5));
System.out.println("counter after subtracting 4: " mc.decr(key, 4));
System.out.println("counter after subtracting 1: " mc.decr(key));
利用客户端的hashcode存储计数 增减 计数:
MemCachedClient mc = new MemCachedClient();
String key = "counterKey";
Integer hash = new Integer(45);
mc.storeCounter(key, new Integer(100), hash);
System.out.println("counter after adding 1: " mc.incr(key, 1, hash));
System.out.println("counter after adding 5: " mc.incr(key, 5, hash));
System.out.println("counter after subtracting 4: " mc.decr(key, 4, hash));
System.out.println("counter after subtracting 1: " mc.decr(key, 1, hash));
获取一个对象:
MemCachedClient mc = new MemCachedClient();
String key = "key";
Object value = mc.get(key);
用客户端hashcode获取一个对象:
MemCachedClient mc = new MemCachedClient();
String key = "key";
Integer hash = new Integer(45);
Object value = mc.get(key, hash);
从cache 中获取多个对象
MemCachedClient mc = new MemCachedClient();
String[] keys ={ "key", "key1", "key2" };Mapvalues = mc.getMulti(keys);
用客户端hashcode() 从cache中获取多个对象
MemCachedClient mc = new MemCachedClient();
String[] keys = { "key", "key1", "key2" };
Integer[] hashes =
{ new Integer(45), new Integer(32), new Integer(44) };
Map<Object> values = mc.getMulti(keys, hashes);
清空所有的对象
MemCachedClient mc = new MemCachedClient();
mc.flushAll();
得到服务器memcached的状态信息
MemCachedClient mc = new MemCachedClient();
Map stats = mc.stats();
注意点
1:Failover/Failback
当一个memcached服务器失效的时候客户端默认会failover另一个服务去.
如果失效的服务器 恢复运行,客户端会返回到原来连接的服务器.
如果你不想用这个功能 设置下面的参数
pool.setFailover( false );
pool.setFailback( false );
2:序列化
Boolean
Byte
String
Character
StringBuffer
StringBuilder
Short
Long
Double
Float
Date
java默认的类型没有实现序列化 可以设置
mcc.setPrimitiveAsString( true )替代.
Meetup.com实践过程中得出的一个经验 ,项目中model 对象implement
Externalizable 实现序列化,可以节省cache 对象的大小。从而节省网络带宽和内存空间。
出处:http://hqman.blog.bokee.net/bloggermodule/blog_printEntry.do?id=980314
分享到:
相关推荐
memcached, libevent, MemCachedClient
memcachedclient-2.0.1.jar 之前在网上搜了很久没搜到,所以找到了跟大家分享
memcached的java客户端jar包,方便调用memcached的服务
Memcached Java Client API详解.doc
缓存服务器memcached代码及使用文档,里面整理了使用的文章及J2EE项目使用demo。有问题可以联系:http://www.0817home.com/
Cache Client接口定义 2 Cache Client依赖及配置 2 Cache Client第三方依赖 2 Cache Client单客户端配置 2 Cache Client集群配置 2 Cache Client Demo 2 Cache Manager 2
memcached-client.php
NULL 博文链接:https://heisetoufa.iteye.com/blog/1542296
C# Memcached client
为了便于分析memcached的源码,使用doxygen生成了这个文档
memcaChed java client所需要的jar包
关于memcache 使用的 客户端是memcached client for java 的 JAVA工程
Memcached.ClientLibrary.dll Memcached.ClientLibrary.dll
包含服务端: memcached-win32.server.1.2.6.0 memcached-win32.server.1.4.4 包含客户端: Enyim.Caching1.2.0.0.dll Enyim.Caching2.12.0.0.dll Memcached.ClientLibrary1.0.0 安装说明文档
在windows下编译的最新的memcached 1.6.21 由于1.4.5以后的memcached不支持windows服务。 使用第三方工具做成了windows的服务 使用说明: 1、解压rar文件 2、以管理员身份运行cmd.exe 3、然后执行service_install....
本资源含有基于java的memcached 的数据缓存开发所需的 memcached-1.2.1-win32.zip 和 java_memcached-release_1.6.zip 快来一起学习吧
memcache分布式缓存,java依赖jar包
spring调用memcached client for java
交互式的缓存。。。。。。。。。。。。。。。。。。。。。。。。。。