`

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详细步骤 #### 一、前言 在Linux环境下部署memcached能够极大地提高应用程序的性能,尤其是在需要缓存数据的应用场景中。本文将详细介绍如何在64位Linux系统上安装memcached,并分享作者...

    linux 安装memcached 详细

    本文将详细介绍在 Linux 系统下安装 Memcached 的步骤,并提供安装包下载链接。 #### 二、安装 libevent 库 Memcached 使用 libevent 库来处理网络事件,因此首先需要安装 libevent 库。 1. **下载 libevent 源码...

    memcached详细安装

    除了以上提到的选项外,Memcached 还提供了许多其他选项,例如查看帮助信息可以通过执行 `memcached -h` 来获得详细的使用指南。 #### 四、总结 Memcached 是一个非常实用且高效的缓存解决方案,尤其适用于需要...

    Memcached原理和使用详解

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

    安装Memcached及Memcached配置

    在本文中,我们将详细介绍如何安装和配置Memcached,以及如何查询其运行状态。 1. **安装Memcached** - 首先,你需要从官方源或指定网址下载适合你操作系统的Memcached版本。例如,Windows用户可以访问...

    memcached命令

    根据给定文件提供的信息,我们将详细介绍memcached的基本命令及其参数的意义。 1. **-l**:指定memcached监听的IP地址,默认为本机所有IP地址。 - 示例:`-l 127.0.0.1` 表示只监听本机的127.0.0.1地址。 2. **-p...

    php memcached安装文档以及Memcached扩展

    本文将详细介绍如何在PHP环境中安装并配置Memcached扩展。 ### 一、Memcached安装 1. **下载Memcached**:首先,你需要从官方网站获取最新版的Memcached源码,或者在Windows环境下,可以直接下载编译好的`...

    memcached-1.5.4

    本文将详细介绍`memcached-1.5.4`版本的源码特点、编译过程以及相关知识。 1. **memcached简介** - `memcached`的核心设计理念是简单而高效,提供了一个键值对存储的接口,支持多线程服务,使用libevent库处理网络...

    Windows 下安装 Memcached1

    本文旨在详细介绍如何在Windows环境下安装Memcached。Memcached是一款高性能、分布式内存对象缓存系统,用于加速动态Web应用,减轻数据库负担。由于官方并未直接提供适用于Windows系统的安装包,本文将引导您完成...

    linux下memcached安装

    本文将详细介绍如何在Linux系统上安装和配置Memcached。 **1. 更新系统** 在安装任何新软件之前,我们需要确保系统是最新的。打开终端并运行以下命令来更新你的Linux发行版: ```bash sudo apt-get update sudo ...

    memcached-笔记资料

    1. "一致性哈希对缓存命中率的影响实验报告.doc":这份文档可能详细介绍了如何使用一致性哈希算法来分配和检索数据在Memcached中的存储,以及该算法如何影响缓存的命中率。一致性哈希是解决分布式缓存中数据分布不均...

    memcached-1.5.12.tar.gz

    以下是关于 memcached 的详细介绍,以及在 Linux 环境下的安装步骤。 1. **memcached 简介**: - memcached 是由 Danga Interactive 开发的开源软件,最初为 LiveJournal 服务设计,现在广泛应用在各种 Web 应用中...

    windows memcached

    下面我们将详细介绍如何在Windows操作系统上安装和使用Memcached。 首先,下载并解压Memcached。你需要找到适用于Windows的Memcached版本,通常为.zip格式。解压缩后,你会得到一个包含可执行文件`memcached.exe`的...

    memcached安装及java应用使用memcached

    1. **memcached介绍**:解释memcached的作用,它是如何通过将数据存储在内存中来减少数据库的读取压力,从而提高Web应用的响应速度。 2. **安装memcached**: - **系统要求**:说明支持的操作系统(如Linux、...

    memcached管理session资源

    本文将详细介绍MSM(Memcached_Session_Manager)的使用,包括所需的jar包和在Tomcat中的配置。 MSM(Memcached_Session_Manager)是一个基于Java的Memcached会话管理器,它允许我们将Web应用的session数据存储在...

    java使用Memcached简单教程

    由于本教程的项目基于Java开发,因此我们将详细介绍如何在Java程序中集成Memcached。 ##### 3.1 引入依赖 为了在Java项目中使用Memcached,我们需要引入一个客户端库。在这里,我们选择使用SpyMemcached作为客户端...

    linux memcached安装

    本文详细介绍了如何在Linux环境下安装Memcached及其依赖库libevent,并提供了启动、停止Memcached服务的方法,以及如何在Tomcat环境下配置Memcached。通过这些步骤,您可以轻松地在自己的Linux服务器上部署并使用...

    CentOS 安装配置memcached

    在本文中,我们将详细介绍如何在 CentOS 系统上安装和配置 Memcached。Memcached 是一个高性能的分布式内存对象缓存系统,广泛应用于各种 web 应用程序中,以提高应用程序的性能和响应速度。 安装 Libevent 在安装...

Global site tag (gtag.js) - Google Analytics