`

java-memcached使用实例

 
阅读更多
package com.memcache;

import java.util.List;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;

/**
 * 使用memcached的缓存测试类.
 * 
 * @author 阿蜜果
 */
public class MemcachedTest {
	// 创建全局的唯一实例
	protected static MemCachedClient mcc = new MemCachedClient();

	protected static MemcachedTest memCached = new MemcachedTest();

	// 设置与缓存服务器的连接池
	static {
		// 服务器列表和其权重
		String[] servers = { "127.0.0.1:11211" };
		Integer[] weights = { 3 };

		// 获取socket连接池的实例对象
		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);

		// 设置TCP的参数,连接超时等
		pool.setNagle(false);
		pool.setSocketTO(3000);
		pool.setSocketConnectTO(0);

		// 初始化连接池
		pool.initialize();

		// 压缩设置,超过指定大小(单位为K)的数据都会被压缩
		// mcc.setCompressEnable(true);
		// mcc.setCompressThreshold(64 * 1024);
	}

	/**
	 * 保护型构造方法,不允许实例化
	 */
	protected MemcachedTest() {

	}

	/**
	 * 获取唯一实例.
	 * 
	 * @return
	 */
	public static MemcachedTest getInstance() {
		return memCached;
	}

	/**
	 * 添加一个指定的值到缓存中.
	 * 
	 * @param key
	 *            键
	 * @param value
	 *            值
	 * @return 在缓存中若该key不存在,并成功添加返回true,否则将返回false
	 */
	public boolean add(String key, Object value) {
		return mcc.add(key, value);
	}

	/**
	 * 添加一个键值对到缓存中.
	 * 
	 * @param key
	 *            键
	 * @param value
	 *            值
	 * @param expires
	 *            超时时间
	 * @return 在缓存中若该key不存在,并成功添加返回true,否则将返回false
	 */
	public boolean add(String key, Object value, Date expires) {
		return mcc.add(key, value, expires);
	}

	/**
	 * 将某个键的值改变成新值,首先需要保证该键存在.
	 * 
	 * @param key
	 *            键
	 * @param value
	 *            值
	 * @return 成功返回true,失败返回false
	 */
	public boolean replace(String key, Object value) {
		return mcc.replace(key, value);
	}

	/**
	 * 将某个键的值改变成新值,首先需要保证该键存在.
	 * 
	 * @param key
	 *            键
	 * @param value
	 *            值
	 * @param expires
	 *            超时时间
	 * @return 成功返回true,失败返回false
	 */
	public boolean replace(String key, Object value, Date expires) {
		return mcc.replace(key, value, expires);
	}

	/**
	 * 添加一个指定的值到缓存中.
	 * 
	 * @param key
	 * @param value
	 * @return 成功返回true,否则返回false
	 */
	public boolean set(String key, Object value) {
		return mcc.set(key, value);
	}

	/**
	 * 添加一个指定的值到缓存中,并设置其超时时间.
	 * 
	 * @param key
	 *            键
	 * @param value
	 *            值
	 * @param expires
	 *            超时时间
	 * @return 成功返回true,否则返回false
	 */
	public boolean set(String key, Object value, int expires) {
		return mcc.set(key, value, expires);
	}

	/**
	 * 根据指定的关键字获取对象.
	 * 
	 * @param key
	 * @return 返回value
	 */
	public Object get(String key) {
		return mcc.get(key);
	}

	/**
	 * 将指定key的value值+1,将返回最后的value值
	 * 
	 * @param key
	 * @return 返回最后的value值
	 */
	public long incr(String key) {
		return mcc.incr(key);
	}

	/**
	 * 将指定key的value值-1,将返回最后的value值
	 * 
	 * @param key
	 * @return 返回最后的value值
	 */
	public long decr(String key) {
		return mcc.decr(key);
	}

	/**
	 * 测试方法
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		MemcachedTest cache = MemcachedTest.getInstance();
		cache.set("count", 1234);
		System.out.println("count=" + cache.get("count"));
		boolean flag = cache.add("schedule_5", "55");
		System.out.println("flag=" + flag);
		System.out.println("schedule_2=" + cache.get("schedule_2"));
		Bean bean = new Bean(1, "bean1", new Date());
		cache.set("bean", bean);
		Bean cachedBean = (Bean) cache.get("bean");
		System.out.println(cachedBean);
		Map map = new HashMap();
		map.put("key1", "value1");
		map.put("key2", "value2");
		cache.set("map", map);
		Map cachedMap = (Map) cache.get("map");
		cachedMap.put("key3", "value3");
		System.out.println(cachedMap);
		List list = new ArrayList();
		list.add(1);
		list.add(2);
		list.add(bean);
		cache.set("list", list);
		List cachedList = (List) cache.get("list");
		System.out.println(cachedList);
	}
}

class Bean implements Serializable {
	/**
	 * 
	 */
	private static final long serialVersionUID = -2947079639200259035L;
	int id;
	String name;
	Date date;

	public Bean(int id, String name, Date date) {
		this.id = id;
		this.name = name;
		this.date = date;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Date getDate() {
		return date;
	}

	public void setDate(Date date) {
		this.date = date;
	}

	public String toString() {
		return id + "|" + name + "|" + date.toString();
	}

}
分享到:
评论

相关推荐

    Java-memcached-demo

    3. **初始化Memcached客户端**:在Java代码中,将根据配置创建一个Memcached客户端实例。比如,使用spymemcached,代码可能如下: ```java MemcachedClientIF client = new MemcachedClient(new ...

    java_memcached-release_2.5.1.jar Memcache java jar 包

    `MemCachedManager.java`可能是库中的一个类,用于管理Memcached实例,帮助用户更方便地连接、操作和管理缓存。 这个库的核心功能包括: 1. **连接管理**:库提供了一种方式来建立和维护到Memcached服务器的连接。...

    JAVA-memcached简单例子

    - 接着,在Java代码中创建一个Memcached客户端实例,连接到服务器: ```java MemcachedClient client = new MemcachedClient(new InetSocketAddress("localhost", 11211)); ``` 4. **基本操作** - 存储数据:...

    java使用memcached的实例

    本文将详细解析如何在Java项目中使用Memcached,包括其配置方法以及一个具体的示例代码,旨在帮助开发者深入理解并掌握这一技术。 ### 一、Memcached简介 Memcached是一种开源的高性能内存键值存储系统,主要用于...

    java_memcached-release_1.6.zip

    为了在Java项目中使用Java Memcached客户端,开发者需要按照以下步骤操作: 1. 解压下载的zip文件,找到并添加jar包到项目类路径。 2. 引入必要的库依赖,例如net.spy.memcached包。 3. 创建Memcached客户端实例,...

    java_memcached-release_2.6.3.zip

    在Java Memcached客户端中,它用于管理连接池,即高效地重复使用已经创建的对象,而不是每次需要时都创建新的对象,这可以显著提高性能并减少系统资源的消耗。 2. **java_memcached-release_2.6.3.jar**:这是Java ...

    java_memcached-release_2.6.6.jar及其依赖包

    使用Java Memcached客户端时,开发者需要实例化一个Memcached客户端对象,配置它连接到一个或多个Memcached服务器。然后,他们可以使用提供的方法来存储和检索数据,例如`set(key, timeout, value)`用于设置键值对,...

    memcached-1.2.1-win32.zip 和 java_memcached-release_1.6.zip

    `memcached-1.2.1-win32.zip` 提供了Memcached服务端,而`java_memcached-release_1.6.zip` 提供了Java客户端,使得开发者能够轻松地在Java环境中集成和使用Memcached。学习和掌握这些资源,将有助于构建更加快速、...

    maven-springmvc-mybatis-memcached

    综上所述,"maven-springmvc-mybatis-memcached"项目是一个全面的Web应用开发实例,它涵盖了现代Java Web开发中的多个关键组件。通过学习和实践这个项目,开发者可以掌握如何利用这些工具和技术构建高效率、高性能的...

    simple-spring-memcached统一缓存的使用实例[整理].pdf

    在Java应用中,尤其是在中大型项目中,有效地管理和使用缓存对于提升系统性能至关重要。Simple-Spring-Memcached(SSM)是一个流行的缓存框架,它整合了Spring框架与Memcached,提供了一种统一的方式来处理缓存操作...

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

    这通常涉及创建一个`MemcachedClient`实例,指定服务器的IP地址和端口号。例如,使用spymemcached库: ```java import net.spy.memcached.MemcachedClient; try { MemcachedClient client = new Memcached...

    java_memcached-release_2.6.3.rar 客户端所有包

    - 创建Memcached客户端实例:使用客户端库初始化一个连接到Memcached服务器的客户端对象。 - 缓存操作:使用客户端提供的API进行添加、获取、更新和删除缓存项的操作。 - 日志配置:根据项目需求,配置SLF4J的...

    Memcached java的使用实例

    本文将深入讲解如何在Java环境下集成和使用Memcached。 首先,我们需要在Java项目中引入Memcached的客户端库。常见的Java Memcached客户端有spymemcached和xmemcached,这里以spymemcached为例。可以通过Maven在`...

    simple-spring-memcached(ssm) 和spring的集成

    3. **配置 Spring**:在 `Spring` 配置文件(如 `beans.xml`)中,声明 `MemcachedClient` 实例,并指定配置信息。 4. **创建缓存注解**:`SSM` 提供了 `@Cacheable`、`@CacheEvict` 和 `@CachePut` 等注解,用于...

    tomcat-7.0.47-memcached-各种序列化策略-session共享

    在IT行业中,尤其是在Web服务领域,Tomcat是一个广泛使用的开源应用服务器,主要处理Java Servlet和JSP(JavaServer Pages)应用程序。而Memcached则是一种高性能、分布式内存对象缓存系统,用于减少数据库负载,...

    Tomcat7-Memcached集群Session所需jar包

    spymemcached是Java实现的Memcached客户端,它提供了连接到Memcached服务器、执行操作(如set、get、delete等)的能力。在Tomcat7项目中,我们需要添加spymemcached的jar包作为依赖。 5. **Tomcat7配置** 配置...

    java使用Memcached简单教程

    2. **集群部署**:使用多个Memcached实例构建集群,通过负载均衡来分发请求,提高处理能力。 3. **使用更先进的解决方案**:随着技术的发展,一些新的缓存方案,如Redis或作者新推出的Groupcache(使用Go语言编写)...

    nginx-1.9.3--tomcat-(6,7)-memcached-session共享负载

    4. 修改Tomcat的web.xml配置文件,使用Memcached Session Manager替换默认的Session Manager,配置相应的Memcached服务器地址和端口。 5. 在Nginx配置中添加Session黏性规则,确保用户请求始终被转发到之前处理其...

    Linux-memcached-tomcat8-session共享lib.rar

    这个名为“Linux-memcached-tomcat8-session共享lib.rar”的压缩包文件显然旨在解决一个特定的问题:在Linux系统上,通过Nginx作为负载均衡器,利用Memcached实现跨多个Tomcat实例的session共享。下面将详细解释这个...

    Memcached使用--使用

    4. **集群扩展**:当单个Memcached实例无法满足需求时,可以通过增加更多服务器构成集群。 **六、与其他缓存系统的比较** 与Redis相比,Memcached更简单,专注于高速缓存,而Redis提供了更多的数据结构和持久化...

Global site tag (gtag.js) - Google Analytics