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();
}
}
分享到:
相关推荐
3. **初始化Memcached客户端**:在Java代码中,将根据配置创建一个Memcached客户端实例。比如,使用spymemcached,代码可能如下: ```java MemcachedClientIF client = new MemcachedClient(new ...
`MemCachedManager.java`可能是库中的一个类,用于管理Memcached实例,帮助用户更方便地连接、操作和管理缓存。 这个库的核心功能包括: 1. **连接管理**:库提供了一种方式来建立和维护到Memcached服务器的连接。...
- 接着,在Java代码中创建一个Memcached客户端实例,连接到服务器: ```java MemcachedClient client = new MemcachedClient(new InetSocketAddress("localhost", 11211)); ``` 4. **基本操作** - 存储数据:...
本文将详细解析如何在Java项目中使用Memcached,包括其配置方法以及一个具体的示例代码,旨在帮助开发者深入理解并掌握这一技术。 ### 一、Memcached简介 Memcached是一种开源的高性能内存键值存储系统,主要用于...
为了在Java项目中使用Java Memcached客户端,开发者需要按照以下步骤操作: 1. 解压下载的zip文件,找到并添加jar包到项目类路径。 2. 引入必要的库依赖,例如net.spy.memcached包。 3. 创建Memcached客户端实例,...
在Java Memcached客户端中,它用于管理连接池,即高效地重复使用已经创建的对象,而不是每次需要时都创建新的对象,这可以显著提高性能并减少系统资源的消耗。 2. **java_memcached-release_2.6.3.jar**:这是Java ...
使用Java Memcached客户端时,开发者需要实例化一个Memcached客户端对象,配置它连接到一个或多个Memcached服务器。然后,他们可以使用提供的方法来存储和检索数据,例如`set(key, timeout, value)`用于设置键值对,...
`memcached-1.2.1-win32.zip` 提供了Memcached服务端,而`java_memcached-release_1.6.zip` 提供了Java客户端,使得开发者能够轻松地在Java环境中集成和使用Memcached。学习和掌握这些资源,将有助于构建更加快速、...
综上所述,"maven-springmvc-mybatis-memcached"项目是一个全面的Web应用开发实例,它涵盖了现代Java Web开发中的多个关键组件。通过学习和实践这个项目,开发者可以掌握如何利用这些工具和技术构建高效率、高性能的...
在Java应用中,尤其是在中大型项目中,有效地管理和使用缓存对于提升系统性能至关重要。Simple-Spring-Memcached(SSM)是一个流行的缓存框架,它整合了Spring框架与Memcached,提供了一种统一的方式来处理缓存操作...
这通常涉及创建一个`MemcachedClient`实例,指定服务器的IP地址和端口号。例如,使用spymemcached库: ```java import net.spy.memcached.MemcachedClient; try { MemcachedClient client = new Memcached...
- 创建Memcached客户端实例:使用客户端库初始化一个连接到Memcached服务器的客户端对象。 - 缓存操作:使用客户端提供的API进行添加、获取、更新和删除缓存项的操作。 - 日志配置:根据项目需求,配置SLF4J的...
本文将深入讲解如何在Java环境下集成和使用Memcached。 首先,我们需要在Java项目中引入Memcached的客户端库。常见的Java Memcached客户端有spymemcached和xmemcached,这里以spymemcached为例。可以通过Maven在`...
3. **配置 Spring**:在 `Spring` 配置文件(如 `beans.xml`)中,声明 `MemcachedClient` 实例,并指定配置信息。 4. **创建缓存注解**:`SSM` 提供了 `@Cacheable`、`@CacheEvict` 和 `@CachePut` 等注解,用于...
在IT行业中,尤其是在Web服务领域,Tomcat是一个广泛使用的开源应用服务器,主要处理Java Servlet和JSP(JavaServer Pages)应用程序。而Memcached则是一种高性能、分布式内存对象缓存系统,用于减少数据库负载,...
spymemcached是Java实现的Memcached客户端,它提供了连接到Memcached服务器、执行操作(如set、get、delete等)的能力。在Tomcat7项目中,我们需要添加spymemcached的jar包作为依赖。 5. **Tomcat7配置** 配置...
2. **集群部署**:使用多个Memcached实例构建集群,通过负载均衡来分发请求,提高处理能力。 3. **使用更先进的解决方案**:随着技术的发展,一些新的缓存方案,如Redis或作者新推出的Groupcache(使用Go语言编写)...
4. 修改Tomcat的web.xml配置文件,使用Memcached Session Manager替换默认的Session Manager,配置相应的Memcached服务器地址和端口。 5. 在Nginx配置中添加Session黏性规则,确保用户请求始终被转发到之前处理其...
这个名为“Linux-memcached-tomcat8-session共享lib.rar”的压缩包文件显然旨在解决一个特定的问题:在Linux系统上,通过Nginx作为负载均衡器,利用Memcached实现跨多个Tomcat实例的session共享。下面将详细解释这个...
4. **集群扩展**:当单个Memcached实例无法满足需求时,可以通过增加更多服务器构成集群。 **六、与其他缓存系统的比较** 与Redis相比,Memcached更简单,专注于高速缓存,而Redis提供了更多的数据结构和持久化...