`

memcached 客户端代码 Java memcached client学习2(socket如何建立))

阅读更多
好了 继续我的代码研究之旅。
昨天晚上 看了一致性hash算法 拍案叫绝
请看如下代码:
//创建链接
for ( int j = 0; j < initConn; j++ ) {
				SockIO socket = createSocket( servers[i] );
				if ( socket == null ) {
					log.error( "++++ failed to create connection to: " + servers[i] + " -- only " + j + " created." );
					break;
				}
//加入socket到连接池 这里慢慢谈
	addSocketToPool( availPool, servers[i], socket );
		if ( log.isDebugEnabled() )
					log.debug( "++++ created and added socket: " + socket.toString() + " for host " + servers[i] );
}


先创建SockIO
SockIO socket = createSocket( servers[i] );

创建socket代码如下:
protected static Socket getSocket( String host, int port, int timeout ) throws IOException {
			SocketChannel sock = SocketChannel.open();
			sock.socket().connect( new InetSocketAddress( host, port ), timeout );
			return sock.socket();
		}


那如何将数据添加到可用池中呢?
如下代码:
protected void addSocketToPool( Map<String,Map<SockIO,Long>> pool, String host, SockIO socket ) {

		if ( pool.containsKey( host ) ) {
			Map<SockIO,Long> sockets = pool.get( host );

			if ( sockets != null ) {
				sockets.put( socket, new Long( System.currentTimeMillis() ) );
				return;
			}
		}

		Map<SockIO,Long> sockets =
			new IdentityHashMap<SockIO,Long>();

		sockets.put( socket, new Long( System.currentTimeMillis() ) );
		pool.put( host, sockets );
	}
分享到:
评论

相关推荐

    MemCached Cache Java Client封装优化历程.docx

    4. **Socket 通信**:Memcached 使用 TCP 或 UDP 通信协议,客户端可以选择使用同步或异步的网络 I/O 模型。数据传输前需要序列化,为了降低开销,建议存储较小的数据,如字符串。 5. **特殊的内存分配机制**:...

    Memcached客户端手册

    本文主要介绍了Memcached的基本概念及其Java客户端库的使用方法,特别是针对`MemcachedClient`的接口定义、依赖配置以及配置文件的细节进行了详细解释。通过这些知识点的学习,读者可以更好地理解和掌握如何在实际...

    java使用memcached的实例

    &lt;bean id="memcachedClient" class="com.danga.MemCached.MemCachedClient"&gt; ... ``` 这段配置指定了Memcached的连接池参数,如服务器地址、初始连接数、最小和最大连接数等,以及客户端的一些特性,如是否...

    memCache源码java客户端

    1. **MemcachedClient**: 这是客户端的主要类,负责建立与memcached服务器的连接,执行各种操作。 2. **Operation**: 包含了各种操作接口,如`get`, `set`, `delete`, `increment`等,它们是异步执行的。 3. **...

    java调用memcached

    首先,我们来看`MemCachedClient`类,这是Java客户端与Memcached服务器进行交互的主要接口。这个类通常包含初始化、设置服务器池、添加、删除、获取和更新缓存项等方法。例如,它可能有一个构造函数用于设置服务器...

    C# Memcached client.zip

    "C# Memcached client.zip" 文件可能包含了一个用C#编写的Memcached客户端库的源代码,供开发者集成到他们的.NET应用中。 Memcached的工作原理是基于键值对存储,它将数据存储在内存中,以便快速访问。当应用程序...

    memcached工具类源码

    在Java中,我们可以使用各种客户端库与Memcached通信,如Spymemcached、Xmemcached、MemcachedClient等。这些库提供了方便的方法来操作Memcached服务器,包括设置、获取、删除和过期等操作。 3. **源码结构分析** ...

    MemCached Cache Java Client封装优化历程

    在使用Java客户端与Memcached交互时,通常需要进行以下优化: 1. **连接池管理**:为了减少连接创建和销毁的开销,使用连接池管理多个连接。 2. **序列化优化**:选择高效的序列化方案,如Google的Protobuf或Jackson...

    spring集成memcached

    1. **MemcachedClient for Java**:这是一种较早出现的客户端,以其稳定性和广泛应用而著称。 2. **SpyMemcached**:相比于MemcachedClient for Java,它在性能上有一定的优化。 3. **XMemcached**:该客户端在并发...

    memcached java源码(master分支)

    1. **连接管理**:客户端需要建立到Memcached服务器的连接,这通常涉及到Socket通信和连接池的实现。连接管理模块负责创建、管理和复用这些连接,以提高效率并减少资源消耗。 2. **命令编码与解码**:Memcached使用...

    Memcached Client 使用手册

    ### Memcached Client 使用手册 #### Cache Client 接口定义与功能概述 - **ICache**:作为缓存的基础接口,提供了缓存的基本操作方法。这些方法涵盖了缓存数据的存储、检索、删除等功能,旨在为应用程序提供高效...

    java_memcached-release_2.5.1

    Memcached Cache现在已经被大家广泛使用,但是千万不要认为对Cache的操作是低损耗的,要知道这类集中式Cache对Socket连接数(会牵涉到linux操作系统文件句柄可用数),带宽,网络IO都是有要求的,有要求就意味着会有...

    Memcached学习笔记

    - 配置Socket连接池,示例代码如下: ```java package utils.cache; import com.danga.MemCached.MemCachedClient; import com.danga.MemCached.SockIOPool; public class MemCached { protected static ...

    JAVA上百实例源码以及开源项目源代码

    Tcp服务端与客户端的JAVA实例源代码 2个目标文件 摘要:Java源码,文件操作,TCP,服务器 Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多...

    asf-cache中文guide

    本文档主要针对的是一个经过优化的Memcached客户端,它在性能上优于传统的Java客户端。Memcached是一种分布式内存缓存系统,常用于减轻数据库的负载,提高应用程序的响应速度。这个优化版客户端尤其适用于Java开发...

    Java开发中的Memcache原理及实现

    ### Java开发中的Memcache原理及实现 #### 一、概述 **1.... Memcache(Memcached)是一种高...在实际开发过程中,还需要进一步学习如何编写Java代码与Memcached交互,以及如何有效地利用Memcached提高应用程序性能。

    MemCache Client User Guide

    2. `&lt;client&gt;` 标签:定义客户端实例,`name`属性用于标识,`compressEnable`控制压缩,`defaultEncoding`设置默认编码,`socketpool`引用Socket连接池配置。 3. `&lt;errorHandler&gt;` 标签(可选):用于指定错误处理器...

    Java memcache缓存实现for Windows.docx

    MemcachedClient memCachedClient = new MemcachedClient(pool); for (int i = 0; i ; i++) { String result = (String) memCachedClient.get("" + i); // 读取缓存 } ``` 3. **Memcache与Tomcat、Nginx结合**...

Global site tag (gtag.js) - Google Analytics