`

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

分享到:
评论

相关推荐

    Linux下安装memcached详细步骤

    介绍Linux下memcached详细安装步骤,自己的实际安装经验。

    Memcached原理和使用详解

    文件详细描述了Memcached相关原理和使用方法,内容包括:Memcached原理介绍、Memcached安装和使用说明、Memcached使用的技巧等。

    Memcached安装和配置

    详细介绍安装Memcached及Memcached配置

    Memcached 原理和使用详解

    详细介绍了分布式缓存系统memcached的原理和详细使用方法。主要包括1、Memcached介绍;2、Memcached安装3、使用一些技巧等内容

    memcached部署

    memcached部署,详细介绍了memcached缓存的使用,为以后的云负载均衡做一个基础。

    Memcached 介绍文档

    详细介绍了Memcached的使用,原理及出处

    Java环境下Memcached应用详解.docx

    本文将对在Java环境下Memcached应用进行详细介绍。Memcached主要是集群环境下的缓存解决方案,可以运行在Java或者.NET平台上,这里我们主要讲的是Windows下的Memcached应用。希望本文档会给有需要的朋友带来帮助;

    Memcached的原理和使用详解

    Memcached的原理和使用详解,详细介绍了Memcached的配置和集群的功能

    memcached全面剖析–4.memcached的分布式算法

    正如第1次中介绍的那样,memcached虽然称为“分布式”缓存服务器,但服务器端并没有“分布式”功能。服务器端仅包括第2次、第3次前坂介绍的内存存储功能,其实现非常简单。至于memcached的分布式,则是完全由客户端...

    memcached_termkqh_memcache_

    memcached设计开发文档,里面详细介绍了memcached的设计与使用,比较简短,容易上手。

    Memcached的封装优化及相关操作api

    Memcached的封装优化及相关操作api,详细介绍了memcached的使用和配置,以及对其的封装优化

    memcached协议路由器Mcrouter.zip

    Mcrouter 是一个 memcached 协议路由器,用于对 memcached 的部署进行扩展。这是 Facebook 缓存架构的核心组件,峰值的时候每秒可处理 50 亿请求。详细介绍请看这里。 标签:Mcrouter

    memcached全面剖析

    对memcached进行了详细介绍,提高web应用的速度和可扩展性,减少数据库访问量, 不论入门学习,还是日常查询,都是不错的选择。

    HandlerSocket详细介绍

    HandlerSocket详细介绍 mysql和memcached的集合

    C# Memcached缓存用法实例详解

    主要介绍了C#中Memcached缓存用法,以实例形式详细讲述了在C#中针对Memcached缓存的各种操作,非常具有实用价值,需要的朋友可以参考下

    Python编写memcached启动脚本代码实例

    主要介绍了Python编写memcached启动脚本代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    Memcached缓存系统的介绍、安装以及应用方法详解

    主要介绍了Memcached缓存系统的介绍、安装以及应用方法,详细分析了Memcached的安装、启动,并给出了php与C++使用Memcached的方法,需要的朋友可以参考下

    SpringBoot 集成 Memcached的方法示例

    主要介绍了SpringBoot 集成 Memcached的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    php+Memcached实现简单留言板功能示例

    主要介绍了php+Memcached实现简单留言板功能,结合实例形式较为详细的分析了php结合memcached实现留言板的具体步骤与相关操作技巧,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics