`

memcache 参数含义

 
阅读更多
Memcached Java Client API详解
针对Memcached官方网站提供的java_memcached-release_2.0.1版本进行阅读分析,Memcached Java客户端lib库主要提供的调用类是SockIOPool和MemCachedClient?,关键类及方法整理说明如下。

SockIOPool
这个类用来创建管理客户端和服务器通讯连接池,客户端主要的工作包括数据通讯、服务器定位、hash码生成等都是由这个类完成的。

public static SockIOPool getInstance()
获得连接池的单态方法。这个方法有一个重载方法getInstance( String poolName ),每个poolName只构造一个SockIOPool实例。缺省构造的poolName是default。
如果在客户端配置多个memcached服务,一定要显式声明poolName。
public void setServers( String[] servers )
设置连接池可用的cache服务器列表,server的构成形式是IP:PORT(如:127.0.0.1:11211)
public void setWeights( Integer[] weights )
设置连接池可用cache服务器的权重,和server数组的位置一一对应
其实现方法是通过根据每个权重在连接池的bucket中放置同样数目的server(如下代码所示),因此所有权重的最大公约数应该是1,不然会引起bucket资源的浪费。 
for ( int i = 0; i < servers.length; i+/+ ) { if ( this.weights /!= null && this.weights.length > i ) { for ( int k = 0; k < this.weights[i].intValue(); k+/+ ) { this.buckets.add( servers[i] ); if ( log.isDebugEnabled() ) log.debug( "++++ added " + servers[i] + " to server bucket" ); } }

public void setInitConn( int initConn )
设置开始时每个cache服务器的可用连接数
public void setMinConn( int minConn )
设置每个服务器最少可用连接数
public void setMaxConn( int maxConn )
设置每个服务器最大可用连接数
public void setMaxIdle( long maxIdle )
设置可用连接池的最长等待时间
public void setMaintSleep( long maintSleep )
设置连接池维护线程的睡眠时间
设置为0,维护线程不启动
维护线程主要通过log输出socket的运行状况,监测连接数目及空闲等待时间等参数以控制连接创建和关闭。
public void setNagle( boolean nagle )
设置是否使用Nagle算法,因为我们的通讯数据量通常都比较大(相对TCP控制数据)而且要求响应及时,因此该值需要设置为false(默认是true)
ublic void setSocketTO( int socketTO )
设置socket的读取等待超时值
public void setSocketConnectTO( int socketConnectTO )
设置socket的连接等待超时值
public void setAliveCheck( boolean aliveCheck )
设置连接心跳监测开关。
设为true则每次通信都要进行连接是否有效的监测,造成通信次数倍增,加大网络负载,因此该参数应该在对HA要求比较高的场合设为TRUE,默认状态是false。
public void setFailback( boolean failback )
设置连接失败恢复开关
设置为TRUE,当宕机的服务器启动或中断的网络连接后,这个socket连接还可继续使用,否则将不再使用,默认状态是true,建议保持默认。
public void setFailover( boolean failover )
设置容错开关
设置为TRUE,当当前socket不可用时,程序会自动查找可用连接并返回,否则返回NULL,默认状态是true,建议保持默认。
public void setHashingAlg( int alg )
设置hash算法(默认采用md5)
alg=0 使用String.hashCode()获得hash code,该方法依赖JDK,可能和其他客户端不兼容,建议不使用
alg=1 使用original 兼容hash算法,兼容其他客户端
alg=2 使用CRC32兼容hash算法,兼容其他客户端,性能优于original算法
alg=3 使用MD5 hash算法
(
// native String.hashCode(); 
public static final int NATIVE_HASH     = 0;     
// original compatibility hashing algorithm (works with other clients) 
public static final int OLD_COMPAT_HASH = 1; 
// new CRC32 based compatibility hashing algorithm (works with other clients)    
public static final int NEW_COMPAT_HASH = 2; 
// MD5 Based -- Stops thrashing when a server added or removed 
public static final int CONSISTENT_HASH = 3;
)
采用前三种hash算法的时候,查找cache服务器使用余数方法。采用最后一种hash算法查找cache服务时使用consistent方法。
public void initialize()
设置完pool参数后最后调用该方法,启动pool。
MemCachedClient?
public void setCompressEnable( boolean compressEnable )
设定是否压缩放入cache中的数据
默认值是ture
如果设定该值为true,需要设定CompressThreshold?
public void setCompressThreshold( long compressThreshold )
设定需要压缩的cache数据的阈值
默认值是30k
public void setPrimitiveAsString( boolean primitiveAsString )
设置cache数据的原始类型是String
默认值是false
只有在确定cache的数据类型是string的情况下才设为true,这样可以加快处理速度。
public void setDefaultEncoding( String defaultEncoding )
当primitiveAsString为true时使用的编码转化格式
默认值是utf-8
如果确认主要写入数据是中文等非ASCII编码字符,建议采用GBK等更短的编码格式
cache数据写入操作方法
set方法
将数据保存到cache服务器,如果保存成功则返回true
如果cache服务器存在同样的key,则替换之
set有5个重载方法,key和value是必须的参数,还有过期时间,hash码,value是否字符串三个可选参数
add方法
将数据添加到cache服务器,如果保存成功则返回true
如果cache服务器存在同样key,则返回false
add有4个重载方法,key和value是必须的参数,还有过期时间,hash码两个可选参数
replace方法
将数据替换cache服务器中相同的key,如果保存成功则返回true
如果cache服务器不存在同样key,则返回false
replace有4个重载方法,key和value是必须的参数,还有过期时间,hash码两个可选参数
建议分析key的规律,如果呈现某种规律有序,则自己构造hash码,提高存储效率 
cache数据读取操作方法
使用get方法从cache服务器获取一个数据
如果写入时是压缩的或序列化的,则get的返回会自动解压缩及反序列化
get方法有3个重载方法,key是必须的参数,hash码和value是否字符串是可选参数
使用getMulti方法从cache服务器获取一组数据
get方法的数组实现,输入参数keys是一个key数组
返回是一个map 
通过cache使用计数器
使用storeCounter方法初始化一个计数器
使用incr方法对计数器增量操作
使用decr对计数器减量操作 
Memcached Client API 优化(草)
实现memcached的遍历操作
有些应用情况下,需要遍历memcached服务器中所有被cache的数据,目前memcached client API不支持遍历操作,需要进行扩展。

实现get时刷新数据过期时间(应用于session,可能需要修改服务器端程序)
当memcached被用作session服务器的时候,需要支持session的access方法,根据最近访问时间刷新过期时间,目前memcached也不支持该操作,需要进行扩展。

原文:http://blog.csdn.net/qqiabc521/article/details/6438429
可参考:http://huqilong.blog.51cto.com/53638/104526

分享到:
评论

相关推荐

    Linux下memcache编译安装与基本使用教程

    这里的参数含义如下: - `-m 64`:分配给 memcached 的最大内存,默认为 64MB。 - `-p 11211`:监听的端口号。 - `-u root`:运行 memcache 的用户。 如果你想让 memcache 作为后台服务运行,可以添加 `-d` 参数: ...

    telnet连接操作memcache服务器详解

    这里的参数含义如下: - `-d`:以守护进程模式启动。 - `-m`:分配给memcache的最大内存,这里是512MB。 - `-u`:以root用户身份运行。 - `-l`:监听的IP地址,这里是192.168.119.70。 - `-p`:监听的TCP端口号,...

    memcache配置文档

    该命令中的参数含义如下: - `-m 500`:指定分配给Memcached的最大内存为500MB。 - `-p 11333`:指定Memcached监听的端口号为11333。 如果遇到错误提示如“error while loading shared libraries: libevent-1.2.so....

    Linux下Memcache的源码安装

    这里的参数含义如下: - `-d`:以守护进程模式运行。 - `-p 11211`:指定监听的端口。 - `-m 64`:分配给Memcached的内存大小,单位为MB。 - `-l 127.0.0.1`:绑定的IP地址,通常设置为本地环回地址以限制访问。 ...

    memcache in windows

    5. **设置配置**: 使用`memcached.exe -m 64 -p 11211 -l 127.0.0.1 -d start`启动服务,参数含义如下: - `-m`: 指定分配给Memcached的内存大小,单位为MB,这里设置为64MB。 - `-p`: 设置监听端口,这里是11211...

    ubuntu环境下安装memcache及启动的方法

    这里每个参数的含义是: - `-d`:设置为守护进程模式运行。 - `-m 128`:设置内存大小为128MB。 - `-p 22222`:设置监听的TCP端口为22222。 - `-u root`:设置以root用户身份运行。 - `-l 127.0.0.1`:设置监听的...

    企业级memcached部署(session共享)1

    这里的参数含义如下: - `-m`:指定内存最大使用量,这里是16MB。 - `-p`:设置监听的TCP端口,这里是11211。 - `-d`:以守护进程模式运行。 - `-u`:以指定用户(这里是root)运行。 - `-c`:设置最大并发连接数,...

    PHP面静态化技术.docx

    短而有意义的静态URL有利于搜索引擎理解页面内容,参数应避免过多,同时确保每个参数都有明确含义,有助于SEO。 **PHP缓存机制配置** 在`php.ini`文件中,调整相关设置,如关闭错误显示(`display_errors=Off`),...

    HttpCacheMicroService

    数据存储在内存中-对于最初的实现,由地图支持的存储库就足够了,因为还不需要诸如EHCache或MemCache的缓存功能(例如LRU过期,缓存未命中,堆外等)。 当前项目数据结构的大小和数据集的大小不太可能需要永久存储...

    Memcached-Session-Manager多tomcat实现session共享配置

    在实际部署时,还需要将相关的jar包(例如:`memcache-session-manager.jar`和依赖的transcoder库)添加到Tomcat的`lib`目录,以便Tomcat能够识别和使用这个Session Manager。 此外,配合使用文档,可以更深入地...

    PHP高级面试题分享.pdf

    - **Memcache/Redis**:使用内存缓存系统存储Session,速度快,但数据非持久化,服务器崩溃可能导致Session丢失。 - **Cookie**:数据存储在客户端,体积有限,安全性较低,但访问速度较快。 9. **HTTP状态码含义...

    PHP Memcached应用实现代码

    参数含义: - `-d`:以守护进程模式运行。 - `-m 128`:分配128MB内存用于缓存。 - `-l 192.168.1.1`:监听的IP地址。 - `-p 11211`:监听的端口,默认是11211。 - `-u httpd`:指定运行用户。 ### 四、Memcached...

    PHP内存缓存功能memcached示例

    这里的参数含义如下: - `-d`:以守护进程模式运行。 - `-m 128`:分配128MB内存给memcached。 - `-l 192.168.1.1`:指定监听的IP地址。 - `-p 11211`:设置监听的TCP端口。 - `-u httpd`:指定运行用户,通常是非...

Global site tag (gtag.js) - Google Analytics