memcached是高性能的分布式内存缓存服务器。一般的使用目的
是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展
性。
1 确保libevent 和memcacahed 安装成功,并且启动
2 配置文件memcached.properties---memcached Server 配置
memcached.servers=10.100.1.117:11211,10.100.120.185:11211
memcached.weights=3,2
memcached.initConn=100
memcached.minConn=20
memcached.maxConn=1024
memcached.socketTimeout=3000
memcached.maintSleep=5000
#memcached yes/no
memcached.isEnable=yes
memcached.commonCacheTime=600000000
#categories cached time: (30 daies)
memcached.categoriesCacheTime=2592000000
#downTicket cache time: (one day)
memcached.downTicketCacheTime=86400000
memcached 分布式开发就是在此配置文件中配置多了servers 和 weights。当然你也可以不用配置配置文件直接在程序中写
之后java代码解析我把我项目中用的拷个大家供大家参考
public class MCLoader {
private static MCLoader loader = new MCLoader();
private Properties p = new Properties();
private MCLoader() {
try {
InputStream in = this.getClass().getClassLoader().getResourceAsStream("memcached.properties");
p.load(in);
} catch (IOException e1) {
e1.printStackTrace();
}
}
public final static MCLoader getInstance() {
return loader;
}
public Object get(String key) {
return p.get(key);
}
}
public class MemCacheMgr {
private static MemCacheMgr _instance = new MemCacheMgr();
private MemCachedClient mc = null;
public static MemCacheMgr getInstance() {
return _instance;
}
public Date getTime(String key) {
Calendar c = Calendar.getInstance();
long cacheTime = System.currentTimeMillis()
+ Long.parseLong((String) MCLoader.getInstance().get(key));
Date ct = null;
c.setTimeInMillis(cacheTime);
ct = c.getTime();
return ct;
}
public Date getTime() {
Calendar c = Calendar.getInstance();
long cacheTime = System.currentTimeMillis()
+ Long.parseLong((String) MCLoader.getInstance().get(
"memcached.cacheTime"));
Date ct = null;
c.setTimeInMillis(cacheTime);
ct = c.getTime();
return ct;
}
private MemCacheMgr() {
String[] serverArray = null;
Integer[] weights = null;
String[] weightsArray = null;
String serverList = (String) MCLoader.getInstance().get(
"memcached.servers");
String weightList = (String) MCLoader.getInstance().get(
"memcached.weights");
int initConn = Integer.parseInt((String) MCLoader.getInstance().get(
"memcached.initConn"));
int minConn = Integer.parseInt((String) MCLoader.getInstance().get(
"memcached.minConn"));
int maxConn = Integer.parseInt((String) MCLoader.getInstance().get(
"memcached.maxConn"));
int socketTimeOut = Integer.parseInt((String) MCLoader.getInstance().get(
"memcached.socketTimeout"));
int maintSleep = Integer.parseInt((String) MCLoader.getInstance().get(
"memcached.maintSleep"));
if (serverList.indexOf(",") > 0) {
serverArray = serverList.split(",");
System.out.println(serverArray);
} else {
serverArray = new String[] { serverList };
System.out.println(serverArray);
}
if (weightList.indexOf(",") > 0) {
weightsArray = weightList.split(",");
Integer[] weightsI = new Integer[weightsArray.length];
for (int i = 0; i < weightsArray.length; i++) {
weightsI[i] = Integer.parseInt(weightsArray[i]);
}
weights = weightsI;
} else {
weights = new Integer[] { Integer.parseInt(weightList) };
}
// initialize the pool for memcache servers
SockIOPool pool = SockIOPool.getInstance();
pool.setServers(serverArray);
pool.setWeights(weights);
pool.setInitConn(initConn);
pool.setMinConn(minConn);
pool.setMaxConn(maxConn);
pool.setMaintSleep(maintSleep);
pool.setNagle(false);
pool.setSocketTO(socketTimeOut);
pool.setHashingAlg(SockIOPool.CONSISTENT_HASH);
pool.initialize();
mc = new MemCachedClient();
}
public MemCachedClient getCache() {
return mc;
}
/**
* public void set(String key, String value) { set(key, value, null); }
*/
public void set(String key, String value, String timeStr) {
MemCachedClient mc = MemCacheMgr.getInstance().getCache();
Long cacheTime = null;
String cacheTimeValue = "";
if (StringUtil.isNotEmpty(timeStr)) {
try {
cacheTimeValue = (String) MCLoader.getInstance().get(timeStr);
} catch (Exception e) {
e.printStackTrace();
}
}
if (StringUtil.isNotEmpty(cacheTimeValue)) {
cacheTime = Long.parseLong(cacheTimeValue);
} else {
cacheTime = Long.parseLong((String) MCLoader.getInstance().get(
"memcached.commonCacheTime"));
}
Calendar c = Calendar.getInstance();
c.setTimeInMillis(cacheTime);
Date ct = c.getTime();
mc.set(key, value, ct);
}
/**
* 根据key从memcached服务中取得value
*
* @param key
* @return
*/
public String getValue(String key) {
String value = (String) mc.get(key);
return value;
}
public static void main(String[] args) {
//_instance.set("test", "gga22", "100000");
// _instance.getInstance().mc.flushAll();//清空memecache 服务的缓存数据
System.out.println(_instance.getValue("eps.freetoplist1"));
}
之后你就可以通过get,set方法从缓存中获得和存储数据了。
分享到:
相关推荐
标题中的“tomcat与memcached集群jar”指的是在Apache Tomcat服务器上集成Memcached缓存技术所需的Java档案(JAR)文件。Tomcat是流行的开源Java应用服务器,用于部署和运行Java Servlet和JavaServer Pages(JSP)。...
【标题】:“Tomcat6与Memcached集群整合实现Session共享” 在Web应用开发中,Session共享是一个关键问题,尤其是在分布式环境中。Tomcat6是Apache软件基金会的Java Servlet容器,广泛用于部署Java Web应用程序。而...
标题中的“tomcat7 memcached集群”指的是在Tomcat 7这个流行的Java应用服务器中,利用memcached构建的分布式缓存系统,以实现session共享。Session共享是Web应用程序中的一个关键概念,它允许用户在不同服务器之间...
**memcached 开发完整demo详解** `memcached` 是一个高性能、分布式的内存对象缓存系统,用于在动态系统中减少数据库负载,提升应用性能。它通过将数据存储在内存中,以键值对的形式提供高速的数据访问。在这个...
资源名称:memcached原理和使用详解内容简介: Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库...
Memcached是一款高性能的分布式内存缓存服务器,它最初由LiveJournal的运营人员开发,现已成为开源社区中不可或缺的一部分。其设计简洁,协议简单,基于libevent时间处理机制,能够利用epoll/kqueue等技术进行高效的...
Memcached由LiveJournal运营人员开发,目前用户包括LiveJournal、Facebook、mixi、Digg、Wikipedia、Vox等。Facebook使用了200台 Memcached 服务器,每台服务器具有16GB 四核 AMD64处理器,缓存数据达到3TB。 ...
【Memcached集群】 为了提高可用性和扩展性,Memcached可以构建为分布式集群。它使用一致性哈希算法来分散数据,使得数据在节点间均匀分布,增加或减少节点时,只影响一小部分键的映射位置。一致性哈希降低了重新...
此外,memcached还支持多台服务器之间的数据同步,能够在集群环境中提供一致性的缓存服务。 ### Perl Perl是一种通用的脚本语言,因其灵活性和强大的文本处理能力而在Web开发中占有重要地位。Perl支持CGI编程,...
要使用这个组件,开发人员需要将其添加到Tomcat的类路径中,并进行适当的配置,例如设置Memcached服务器的地址和端口,以及选择使用的序列化策略(javolution或kryo)。 总结起来,Memcached_Session_Manager jar是...
在分布式环境中,memcached集群可以处理大量并发请求,分发数据存储,避免单一节点成为瓶颈,确保服务的高可用性和容错性。 **标签:“php集群”** “php集群”标签进一步明确了memcached在这个场景下的用途,即与...
- 对于扩展性,`memcached`支持分布式集群模式,通过一致性哈希策略将数据分散到多个节点,实现高可用和水平扩展。 8. **与其他技术的集成** - `memcached`常与Web开发框架(如PHP、Python、Ruby等)结合使用,...
随着数据量的增加,可以考虑集群部署,通过一致性哈希算法实现Memcached的水平扩展。 通过以上步骤,你可以在Java项目中成功集成并使用Memcached,实现高效的数据缓存。这不仅有助于提升应用性能,还能降低数据库的...
6. **可扩展性**:通过增加更多的服务器节点,可以轻松扩展Memcached集群,应对更大的数据量和更高的并发。 **安装与配置** 在Windows环境下,用户可以下载"memcached-win64-1.4.4-14"压缩包,解压后运行Memcached...
在实际开发中,使用Java Memcached驱动包可以有效提升网站性能。例如,可以将频繁访问但计算成本高的数据存储在Memcached中,减少对数据库的依赖。或者,通过设置缓存过期时间,实现动态数据的缓存,提高响应速度。 ...
在IT行业中,尤其是在分布式系统和Web应用开发领域,session共享是一个关键问题,特别是在集群环境中。当使用多个服务器来处理用户请求时,确保用户的session数据在所有服务器之间保持一致至关重要。"memcached+...
memadmin可能是另一个memcached的管理工具,通常这类工具提供图形化界面,方便用户更直观地管理和监控memcached集群。memadmin-master.zip可能是这个工具的源码包,可能需要解压后编译安装,然后通过Web界面进行操作...
2. **自动发现服务器**:如果Memcached集群中的服务器动态增加或减少,Enyim.Caching可以自动感知并调整连接。 3. **自定义序列化**:通过实现`IMemcachedClientSerialization`接口,你可以自定义数据的序列化和反...
作为PHP开发人员,我们一般能想到的方法有页面静态化处理、防盗链、CDN内容分发加速访问、mysql数据库优化建立索引、架设apache服务器集群()、还有就是现在流行的各种分布式缓存技术:如memcached/redis;...
6. **故障转移和高可用性**:介绍session数据的备份和恢复策略,以及如何在memcached集群中实现session的无缝迁移,以确保服务的连续性。 7. **源码分析**:如果标签中的“源码”是指这部分,那么教程可能包含对`...