项目中用到了cenwenchu的MemcachedClient4Java
,版本号是2.5.1版。
在使用的过程中发现如果memcached服务器重启,客户端会访问失败并抛出"no socket to availble"的异常,失败几次之后又可以正常访问了。
原因是服务器重启的时候,客户端连接池里原有的socket连接失效了,因此使用的时候才抛出异常,抛出异常之后失效的socket被销毁,建立一个新的连接,以后再用的时候就又可以正常访问了。
客户端建立新的socket连接时,如果发现服务器连接不上,会把当前连接池里该服务器的连接都销毁掉。
它的与连接相关的代码主要是SockIOPool,里面有一个维护线程。维护线程实现的功能比较简单,主要是查看连接池里的可用连接数,如果数量小于配置的最小连接数就创建新连接,如果大于最大连接数就销毁空闲的连接,另外还要从连接池里移出死连接。
我修改了它获取连接时异常处理的代码,如果使用前检查发现连接不可用就直接销毁这个连接,然后建立一个新的连接。这样就可以在服务器重启之后立即正常访问而不需要再等失败几次之后才可以。
注意要在配置文件里开启它的连接池维护线程已经检查连接可用性的功能。
分享到:
相关推荐
memcached的java客户端jar包,方便调用memcached的服务
spring调用memcached client for java
关于memcache 使用的 客户端是memcached client for java 的 JAVA工程
Memcached Java Client API详解.doc
java memcached client xmemcached memcache-client-forjava
memcaChed java client所需要的jar包
NULL 博文链接:https://guazi.iteye.com/blog/1071646
MemCached Cache Java Client封装优化历程
MemcachedClient4J 一个使用netty框架编写的mecached客户端,实现mecached ASCII协议,性能超过Spymecached。 有许多功能和扩展是完美的。 提供同步和异步两种接口,使用方法非常简单,示例如下: Memcached...
Memcached-Java-Client-3.0.2.jar
memcached在JAVA中调用的DEMO,直接导入项目,无需新建工程。前提是必须按安装memcached,并启动memcached server服务
MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); System.out.println("Connection to server sucessful."); // 添加数据 Future fo = mcc.set("runoob", 900, "Free ...
下载压缩包,解压查看里面的 OrgManagerServiceImpl 类的方法,已经测试过Spring集成配置Memcached 成功的
Memcached-Java-Client3.0.1
java与memcached整合
这里需要有点说明,很多开发者觉得Memcached是一种分布式Cache,但是其实Memcached服务端本身是单实例的,只是在客户端实现过程中可以根据存储的主键作分区存储,而这个区就是Memcached服务端的一个或者多个实例,...
JAVA遍历Memcache缓存中所有的KEY的方法,可以直接引入使用。
memcached在Java客户端调用时的源码。memcached源码中有一个bug,ip的传参形式为192.168.1.1:12301,到了sockiopool.java中用split(";")来解析ip和端口。这种情况在ipv6的环境下是行不通的。因为v6地址是[xxxx:xx:...