`
jzkangta
  • 浏览: 161160 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

memcached java Client学习(转)

阅读更多
MemCached是很好用的web项目缓存工具,本人在项目中实际使用,比较好用,下面是基础说明,很简单的,所要使用的 jar文件可以到官方网站上下载



memcached client1.6使用文档

一个例子

官方网站 http://www.whalin.com/memcached/

==============

假设我们有3台memcached 服务器,server1 和server2 有3GB 的内存空间,server3 有2GB 的内存空间.下面程序说明怎么来创建客户端.

import com.danga.MemCached.*;

public class MyClass {

// 创建一个 memcached 客户端对象

protected static MemCachedClient mcc = new MemCachedClient();

// 创建 memcached连接池

static

{ // 指定memcached服务地址

String[] servers =

{ "server1.mydomain.com:1121","server2.mydomain.com:1121", "server3.mydomain.com:1121" };

// 指定memcached服务器负载量

Integer[] weights ={ 3, 3, 2 };

// 从连接池获取一个连接实例

SockIOPool pool = SockIOPool.getInstance();

// 设置服务器和服务器负载量

pool.setServers( servers );

pool.setWeights( weights );

// 设置一些基本的参数

//设置初始连接数5 最小连接数 5 最大连接数 250

//设置一个连接最大空闲时间6小时

pool.setInitConn( 5 );

pool.setMinConn( 5 );

pool.setMaxConn( 250 );

pool.setMaxIdle( 1000 * 60 * 60 * 6 );

// 设置主线程睡眠时间

// 每隔30秒醒来 然后

// 开始维护 连接数大小

pool.setMaintSleep( 30 );

// 设置tcp 相关的树形

// 关闭nagle算法

// 设置 读取 超时3秒钟 set the read timeout to 3 secs

// 不设置连接超时

pool.setNagle( false );

pool.setSocketTO( 3000 );

pool.setSocketConnectTO( 0 );

// 开始初始化 连接池

pool.initialize();

// 设置压缩模式

//如果超过64k压缩数据

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 对象的大小。从而节省网络带宽和内存空间。
分享到:
评论

相关推荐

    memcaChed java client jar包

    标题中的"memcached java client jar包"指的是用于Java应用程序与Memcached服务器通信的Java库的JAR文件。 在Java应用中使用Memcached客户端,首先需要将`memcached.jar`添加到项目的类路径中。这个JAR文件包含了...

    Memcached Java Client API详解

    Memcached Java Client API详解.doc

    memcached java client

    本篇文章将详细介绍两个常用的Java Memcached客户端:xmemcached和memcache-client-forjava。 **1. xmemcached** xmemcached是由Ketoo开发的一个高性能、高可用性的Java Memcached客户端。它提供了丰富的API,支持...

    memcached for java client 例子

    **标题解析:** "memcached for java client 例子" 指的是一个使用Java语言编写的客户端库,用于与memcached缓存系统进行交互。...开发者可以通过学习和运行这些示例,更好地理解和掌握Java环境下memcached的使用。

    memcached client for java

    memcached的java客户端jar包,方便调用memcached的服务

    Memcached java的使用实例

    在Java开发中,我们经常会利用Memcached来存储和检索数据,以此提升应用程序的性能。本文将深入讲解如何在Java环境下集成和使用Memcached。 首先,我们需要在Java项目中引入Memcached的客户端库。常见的Java ...

    memcached安装包以及MemCachedClient

    对于 Java 开发者,`MemCachedClient` 是一个常用的 Memcached 客户端库。这里我们关注的是 `java_memcached-release_2.6.6.jar` 文件,这是 Spymemcached 库的一个版本,它提供了与 Memcached 服务器通信的接口。 ...

    MemCached Cache Java Client封装优化历程.docx

    在实际使用中,通常会开发 Java 客户端库来封装 Memcached 的操作,提供更方便的 API。封装过程可能包括: 1. **连接池管理**:为了提高性能,客户端可以使用连接池管理多个到 Memcached 服务器的连接,避免频繁...

    Memcached-Java-Client-release_2.6.1.zip

    《Java与Memcached整合详解——基于Memcached-Java-Client 2.6.1》 在现代Web开发中,缓存技术是提升系统性能的重要手段之一。Memcached是一款高性能、分布式内存对象缓存系统,广泛应用于缓解数据库负载,提高响应...

    Memcached-Java-Client-3.0.2.jar

    Memcached-Java-Client-3.0.2.jar

    memcached 的简单java实例

    **Memcached简介** Memcached是一种高性能、分布式内存对象缓存系统,用于在Web应用程序中减少数据库负载,提高数据访问速度。...在压缩包文件"memcached-dome"中,可能包含了完整的Java代码示例,供你参考和学习。

    Memcached学习笔记 — 第四部分:Memcached Java 客户端-gwhalin(1)-介绍及使用

    本篇学习笔记将重点介绍如何在Java环境中使用gwhalin提供的Memcached客户端进行开发。gwhalin的Memcached Java客户端是一个轻量级、高性能的库,使得Java开发者可以轻松地与Memcached服务器进行交互。 ### 一、...

    memcached java源码(performance分支)

    **Memcached Java源码分析——Performance分支** Memcached是一款高性能的分布式内存对象缓存系统,广泛应用于Web应用中,用于缓解数据库的负载。在Java环境中,我们常常使用Java客户端库来与Memcached服务器进行...

    java使用Memcached简单教程

    ### Java使用Memcached简单教程 #### 一、简介 Memcached是一个高性能的分布式内存对象缓存系统,通过减轻数据库负载来加速动态Web应用,提高网站的浏览速度。它通过在内存中缓存数据和对象来减少读取数据库的次数...

    java中连接memcached服务器

    Java连接Memcached服务器是开发过程中常见的一环,尤其是在构建分布式系统时,利用Memcached作为缓存服务可以显著提升数据访问速度。Memcached是一款高性能、分布式内存对象缓存系统,能够临时存储键值对数据,减轻...

    memcached java简单实例

    本文主要介绍了如何在Java项目中集成和使用Memcached这一开源工具,涉及到源码级别的操作,如创建`MemcachedClient`,设置、获取和删除缓存项。这些都是实际开发中非常实用的技术点,可以帮助开发者有效地优化应用...

    spring调用memcached client for java

    标题 "spring调用memcached client for java" 涉及的是如何在Java应用程序中,特别是Spring框架下,集成和使用Memcached作为缓存系统。Memcached是一个高性能的分布式内存对象缓存系统,常用于减轻数据库负载,提升...

    memcached-java链接所需jar包,以及java链接代码

    在Java应用中与Memcached进行交互,我们需要依赖特定的Java客户端库,这个压缩包可能包含了这些必要的库文件。 Java连接Memcached通常需要以下步骤: 1. **引入依赖**: 首先,你需要在项目中添加Java Memcached...

Global site tag (gtag.js) - Google Analytics