为了支持分布式的使用,我对客户端代码进行了封装。并且可以把分布式的配置导入到xml文件中。格式如下:
<?xml version="1.0" encoding="UTF-8"?>
<memcached>
<socketPool poolName="pool" initConn="5" minConn="5" maxConn="250" maxIdle="21600000"
maintSleep="30" nagle="false" socketTimeOut="3000" socketConnectTo="0"
failover="false" failback="false" aliveCheck="true">
<servers>127.0.0.1:11211,127.0.0.1:11212,127.0.0.1:11213</servers>
<weights>100,100,100</weights>
</socketPool>
</memcached>
Weights主要是设置,每个节点的虚拟节点数目,使用了一致性hash算法。
上代码,代码主要存放在com.schooner.MemCached.lbsMemcached下,有兴趣的童鞋可以看下。
缺点:
每个key+value+flag的大小不能超过一兆,如果需要增大的话,需要下载服务器端的源码,然后进行更改后的编译即可。当时没有必要的,我们可以通过其他的手段进行回避。
例如:如果一个key中要存放一个list列表的话,存放到里边肯定放不下了,我们就可以只存放每个对象的ID应用,然后每个对性单独放到一个key中,这样就可以了。
大家可以研究下其中的分布式算法,很有意思的。在com.schooner.MemCached.lbsMemcached.ConsistentHash中有详细的介绍。其实在初始化memcached客户端的时候,只用设置下pool.setHashingAlg(SockIOPool.CONSISTENT_HASH);memcached服务器就自动使用一致性hash算放来计算分布式的存放规律了。
经过封装后,默认的调用方法为:
存入:MemCachedClientManager.client.set(key,value,expiry)
取出:MemCachedClientManager.client.get(key)中间的过程我们都不用关心了。
如果需要的话,可以对节点的配置进行管理。但是需要遵循下边的规律,就是添加几个节点,需要设置下他需要的虚拟节点数据,也就是xml中的weight值
可参考http://blog.chinaunix.net/u1/56406/showart_2270609.html
附件中包含了封装后的源码和日本mixi网运维写的memcached的说明
分享到:
相关推荐
-u 以的身份运行 (仅在以root运行的时候有效) -m 最大内存使用,单位MB。默认64MB -M 内存耗尽时返回错误,而不是删除项 -c 最大同时连接数,默认是1024 -f 块大小增长因子,默认是1.25 -n 最小分配空间,key+value+...
压缩包内的"memcached-session-manager-tc7-tc8-1.9.6"文件可能包含了`memcached-session-manager`的1.9.6版本,包括适用于Tomcat 7和8的配置文件和依赖库。为了使用这个库,开发者需要在Tomcat的`context.xml`或`...
memcached-1.9.6,libevent-2.1.12-stable.tar memcached-session-manager-1.9.6,msm-kryo-serializer-1.9.6.jar,tomcat8.5,实现会话共享
为了优化这个问题,我们可以使用`memcached-session-manager`,它是一个专门为Tomcat设计的插件,使得Tomcat能够将用户的session数据存储在Memcached服务器上,实现session的分布式管理。 本文将详细介绍如何在...
Memcached-session-manager使用说明及相关jar包(tomcat7版) 依照文档部署即可实现多服务器多tomcat session共享,jar包中是tomcat7集成所需要的jar包,序列化工具用的是java默认的序列化工具,若要使用其他版本的...
5. **配置与使用**:使用 memcached-session-manager 需要在Web应用的配置文件中指定相关参数,如 Memcached 服务器的地址、端口,以及是否启用 Kryo 序列化等。开发者还需要在代码中适当地创建和管理会话。 6. **...
1. **键值存储**:Python-memcached允许开发者使用键(key)和值(value)对来存储数据。键是唯一的标识符,而值可以是任何Python序列化支持的数据类型。 2. **多服务器支持**:你可以配置Python-memcached连接到多...
- 运行`memcached.exe -d install`来安装服务,然后使用`memcached.exe -d start`启动服务。 2. **配置Memcached** - Memcached默认监听127.0.0.1的11211端口,可以在启动时通过命令行参数进行更改,例如`...
memcachedclient-2.0.1.jar 之前在网上搜了很久没搜到,所以找到了跟大家分享
标题中的 "memcached-win-1.5.6.rar" 指的是 Memcached 的 Windows 版本,具体为 1.5.6 版本的安装包。 在Windows环境下,通常使用 `.bat` 文件来执行一些批处理命令,`start.bat` 文件就是这样一个批处理脚本,它...
这里我们关注的是针对Windows 64位系统的版本——`memcached-win64-1.4.4-14.zip`。 标题中的`memcached-win64-1.4.4-14.zip`表明这是Memcached的一个特定版本,适用于64位Windows操作系统。版本号1.4.4-14意味着这...
标题"memcached-win32-1.4.4-14.zip"指的是Memcached的Windows 32位版本,版本号为1.4.4,构建编号14。这个压缩包是一个软件分发包,用于在32位Windows系统上部署和运行Memcached。 描述中提到,Memcached是一个...
memcached-session-manager-1.6.5.jar
"memcached(十一)memcached-session-manager" 这个标题指的是一个关于memcached缓存系统与session管理的系列教程的第十一部分。在这个教程中,重点可能是如何使用memcached来存储和管理Web应用中的session数据,以...
memcached-session-manager-tc6-1.6.3.jar
`memcached-1.2.1-win32.zip` 提供了Memcached服务端,而`java_memcached-release_1.6.zip` 提供了Java客户端,使得开发者能够轻松地在Java环境中集成和使用Memcached。学习和掌握这些资源,将有助于构建更加快速、...
在这个案例中,我们使用的版本是 `memcached-1.2.1-win32`。这个压缩包包含了运行 Memcached 所需的所有文件。你可以通过访问官方网站或第三方镜像站点获取该版本的安装包。下载完成后,将其解压缩到你选择的本地...
【标题】:“Memcached-session-manager所需最新jar包-tomcat7-kryo序列”指的是在Tomcat7中使用Memcached作为会话管理器时,需要的特定版本的jar包,特别是与Kryo序列化相关的组件。 【描述】:“Memcached-...