版本:gwhalin-Memcached-Java-Client-release_2.6.1-0-gab2cc7e
在memcached使用中:
static {
String[] serverlist = { "cache0.server.com:12345", "cache1.server.com:12345" };
SockIOPool pool = SockIOPool.getInstance();
pool.setServers(serverlist);
pool.initialize();
}
最后需要对pool进行initialize();其实就是调用的SchoonerSockIOPool的initialize:
public void initialize() {
schoonerSockIOPool.initialize();
}
而在SchoonerSockIOPool初始化中,
public void initialize() {
initDeadLock.lock();
try {
// if servers is not set, or it empty, then
// throw a runtime exception
if (servers == null || servers.length <= 0) {
log.error("++++ trying to initialize with no servers");
throw new IllegalStateException("++++ trying to initialize with no servers");
}
// pools
socketPool = new HashMap<String, GenericObjectPool>(servers.length);
hostDead = new ConcurrentHashMap<String, Date>();
hostDeadDur = new ConcurrentHashMap<String, Long>();
// only create up to maxCreate connections at once
// initalize our internal hashing structures
if (this.hashingAlg == CONSISTENT_HASH)
populateConsistentBuckets();
else
populateBuckets();
// mark pool as initialized
this.initialized = true;
} finally {
initDeadLock.unlock();
}
}
在初始化最后设置了this.initialized = true
如果拿到的是同一个SchoonerSockIOPool,就会又一次初始化,这个算不算一个bug?
--------------------
在自己编程序的时候,把pool的设置集中在一个地方,只进行一次,这样应该就不会有什么问题了。
下面就是在MemCachedClient 中,使用这些Pool了
分享到:
相关推荐
最近一直在做一个项目的前期设计工作,考虑到后期系统的扩展和性能问题也找了很多解决方法,有一个就是用到了数据库的缓存工具memcached(当然该工具并不仅仅局限于数据库的缓存)。先简单的介绍下什么是memcached。...
使用memcached 方法 package com.war.common.util; import com.danga.MemCached.*; import java.util.Date; public class MemCached { protected static MemCachedClient mcc; protected static Logger log; ...
尽管发布时间较早,但因其稳定性和广泛应用,仍然是一个可靠的选择。这种客户端使用简单的API,适合对性能要求不那么极致但重视稳定性的场景。 2. **Spymemcached** Spymemcached由Dustin Sallings编写,利用了...
1. 初始化分布式缓存系统配置,设置服务器地址,创建一个Memcached客户端,并设定是否启用数据压缩。 ```csharp string[] serverlist = { "192.168.1.100:11211" }; // 设置服务器地址 SockIOPool pool = ...
对于.NET开发者来说,尽管.NET框架本身提供了内置的缓存机制,但Memcached因其高效性和广泛支持的语言客户端,成为了一个受欢迎的选择。 分布式缓存是Memcached的核心特性之一。不同于其他分布式系统中的节点间通信...
易语言Memcached协议客户端模块源码,Memcached协议客户端模块,Initialize,Connect,Timeout,Exptime,IsRunning,RunStorageCommand,AnalyzeMessage,Set,Add,Replace,Delete,Incr,Decr,Version,Get,GetMulti,...
Memcached 是一个开源的、基于内存的缓存系统,用于提高动态网页的速度和效率。下面对 Memcached 缓存编程实战的知识点进行详细的解释和分析。 Memcached 介绍 Memcached 是一个高性能的缓存系统,通过减少数据库...
Memcached 是一个高性能、分布式内存对象缓存系统,常用于减轻数据库的负载,通过将数据存储在内存中来加速读取。在Windows环境下,使用Java与Memcached进行交互需要几个关键步骤。 首先,你需要下载Memcached的...
为了连接到本地运行的Memcached服务,可以通过JavaMemcachedClient创建一个连接池实例,指定Memcached服务器的IP地址和端口号。示例代码如下: ```java // 创建连接池实例 SchoonerSockIOPool pool = new ...
在项目的资源目录下创建一个名为`memcached.properties`的配置文件,用于指定Memcached服务的基本信息和连接参数: ```properties memcached.server1=127.0.0.1 memcached.port1=11211 memcached.initConn=20 ...
在类中,我们定义了一个私有的`cachedClient`变量,它是`MemCachedClient`类型的实例,用于与Memcached服务器通信。 为了初始化连接池,`MemcachedUtil`类包含一个静态代码块,这里设置了连接池的相关参数。首先,...
// 设置一个值 boolean setSuccess = mcc.set("testKey", 900, "Hello, World!", 0).equals("STORED"); if (setSuccess) { System.out.println("Set success!"); } else { System.out.println("Set failed!");...
在Java开发中,使用Memcached作为缓存系统可以显著提高应用程序的性能,因为它是一个高性能的分布式内存对象缓存系统。Memcached能够存储和检索小的数据片段,如字符串、JSON对象或序列化的Java对象,减少对数据库的...
- javamemcached-release2.6.3:这是一个较为通用的Memcached客户端框架,可以很方便地与Memcached服务器进行交互。 - alisoft-xplatform-asf-cache-2.5.1:这是由阿里软件架构师岑文初封装的客户端库,注释是中文的...
PHP Warning: PHP Startup: memcache: Unable to initialize module Module compiled with module API=20090626, debug=0, thread-safety=0 PHP compiled with module API=20060613, debug=0, thread-safety=0 These...