package com.test.memcache;
import java.util.Date;
import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;
/**
* 利用开源项目danga.MemCached管理缓存,实现分布式缓存支持。
* 在调试时使用了memcached-1.2.6-win32-binary安装,在部署时需要build linux版本部署。 服务器默认端口是11211
*/
public class MemCacheManager {
// 创建全局的唯一实例
protected static MemCachedClient mcc = null;
protected static MemCacheManager memCacheManager = null;
/**
* 保护型构造方法!
*
*/
protected MemCacheManager() {
}
/**
* 获取唯一实例.
*
* @return
*/
public static MemCacheManager getInstance() {
// 设置与缓存服务器的连接池
if (memCacheManager == null) {
// 获取socke连接池的实例对象
SockIOPool pool = SockIOPool.getInstance();
String server ="127.0.0.1";
String port ="11211";
String[] servers = { server+":"+port};
// 设置服务器信息
pool.setServers(servers);
// 与服务器列表中对应的各服务器的权重,权重高的负载大
Integer[] weights = { 3 };
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)的数据都会被压缩
MemCachedClient mcc = new MemCachedClient();
mcc.setCompressEnable(true);
mcc.setCompressThreshold(64 * 1024);
memCacheManager = new MemCacheManager();
memCacheManager.mcc = mcc;
}
return memCacheManager;
}
/**
* 添加一个指定的值到缓存中.
*
* @param key
* @param value
* @return
*/
public boolean put(String key, Object value) {
return mcc.add(key, value);
}
public boolean put(String key, Object value, Date expiry) {
return mcc.add(key, value, expiry);
}
public boolean replace(String key, Object value) {
return mcc.replace(key, value);
}
public boolean replace(String key, Object value, Date expiry) {
return mcc.replace(key, value, expiry);
}
/**
* 根据指定的关键字获取对象.
*
* @param key
* @return
*/
public Object get(String key) {
Object rv= mcc.get(key);
return rv;
}
}
依赖jar文件:
java_memcached-release_2.0.1.jar
分享到:
相关推荐
对于“membercache-5.2”而言,readme.txt可能会详细介绍如何配置和使用这个缓存系统,包括如何安装dll文件,启动memcached服务,以及如何在PHP代码中利用这个扩展。 在实际应用中,使用`php_memcache_5.2.dll`时,...
membercached要用到的dll和基础使用范例。
本篇我们将深入探讨如何使用Python与Memcached进行交互,上传数据到缓存系统,并了解相关的源码和工具。 首先,我们需要安装Python的`memcache`库,这是Python与Memcached服务器通信的标准接口。通过Python的`pip`...
在Linux环境下,使用Memcached实现Tomcat集群的session复制是一个常见的解决方案,以提高应用的可扩展性和高可用性。Memcached是一种分布式内存对象缓存系统,它可以存储包括session在内的临时数据,使得多个服务器...
4, BindForm() 自动绑定表单数据配合Add()、Edit()使用减少大量代码,极大提高开发效率 D_表名(静态方法类) 1, 查询一条数据 GetModel($id)、 GetModelByWhere($where) 2,查询多条数据 GetList($PageSize,$...
下载分设置的比较高,不过绝对的...为了在接下来的项目中能够方便的控制和使用 redis,所以也粗略的模仿了下membercache的aop代码,写了一份spring-redis-aop。当然方法有很多种,也许你有更好的 使用方法当然更好哈。
标题中的“Nginx+Tomcat6+Memcached 实现负载均衡”涉及到的是一个常见的Web服务器和应用服务器的架构组合,用于提高系统性能和可扩展性。在这个架构中,Nginx作为反向代理和负载均衡器,Tomcat6是Java应用服务器,...
在构建高性能的Web应用系统时,常常会遇到服务器集群间会话共享的问题。"nginx+tomcat7+memcached所需jar"的组合提供了一种解决方案,利用Memcached作为分布式缓存来实现跨服务器的session共享,提高系统的可扩展性...
压缩包中的文件列表显示了一些开发相关的文件,如autofac.extras.dynamicproxy2.3.0.7.nupkg,这表明项目可能使用Autofac作为依赖注入容器,并且利用动态代理进行AOP(面向切面编程)来增强代码。DCLSystem.sln是...