Memcached

一,Windows下的Memcache安装

1.
下载memcachewindows稳定版,解压放某个盘下面,比如在c:\memcached

2.
在终端(也即cmd命令界面)下输入 'c:\memcached\memcached.exe -d install' 安装

3.
再输入: 'c:\memcached\memcached.exe -d start' 启动。NOTE:
以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了。

magent -u root(启动用户uid) -n 51200(最大连接数) -l 127.0.0.1(ip地址) -p 12000(监听端口) -s 127.0.0.1:11211(memcachedip) -s 127.0.0.1:11212(memcachedip) -b 127.0.0.1:11213(备份memcachedip)

magent -u root -n 5120 -l 127.0.0.1 -p 12000 -s
127.0.0.1:11211 -s 127.0.0.1:11212  -b
127.0.0.1:11213

-p 监听的端口

-l 
连接的IP地址, 默认是本机

-d start
启动memcached服务

-d restart
重起memcached服务

-d stop|shutdown
关闭正在运行的memcached服务

-d install
安装memcached服务

-d uninstall
卸载memcached服务

-u 
以的身份运行 (仅在以root运行的时候有效)

-m 
最大内存使用,单位MB。默认64MB

-M
内存耗尽时返回错误,而不是删除项

-c 
最大同时连接数,默认是1024

-f 
块大小增长因子,默认是1.25

-n 
最小分配空间,key+value+flags默认是48

-h
显示帮助

telnet
127.0.0.1 11211
stats
查询状态

quit  退出telnet二,memcache服务器安全:

>用内网ip的方式提供web应用服务器调用,不允许直接通过外网调用,如将memcache服务器放在192.168.1.55的服务器上

2>
修改端口,如改为11200

3>
分配内存,如分配1024M(1G内存)

方法如下:

1>
开始>运行:regedit(回车)
2>
在注册表中找到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached
Server


3>
默认的ImagePath键的值是:"c:\memcached\memcached.exe" -d runservice,改为:"c:\memcached\memcached.exe" -d  runservice  -m  512  -p 11200  -l  192.168.1.55(确定,关闭注册表)

4>
我的电脑(右键)>管理>服务 找到memcache的服务,重新启动一次即可生效。


可以使用php写的MemAdmin 来监控memcahce运行状态

三:memcached机制

memcached能接受的key的最大长度是多少?

key 的最大长度是250个字符。需要注意的是,250memcached服务器端内部的限制,如果您使用的客户端支持”key的前缀”或类似特性,那么 key(前缀+原始key)的最大长度是可以超过250个字符的。我们推荐使用使用较短的key,因为可以节省内存和带宽。

这些状态的说明如下
























































































                                                                                     

 

pid


 

 

memcache服务器的进程ID


 

 

uptime


 

 

服务器已经运行的秒数


 

 

time


 

 

服务器当前的unix时间戳


 

 

version


 

 

memcache版本


 

 

pointer_size


 

 

当前操作系统的指针大小(32位系统一般是32bit


 

 

rusage_user


 

 

进程的累计用户时间


 

 

rusage_system


 

 

进程的累计系统时间


 

 

curr_items


 

 

服务器当前存储的items数量


 

 

total_items


 

 

从服务器启动以后存储的items总数量


 

 

bytes


 

 

当前服务器存储items占用的字节数


 

 

curr_connections


 

 

当前打开着的连接数


 

 

total_connections


 

 

从服务器启动以后曾经打开过的连接数


 

 

connection_structures


 

 

服务器分配的连接构造数


 

 

cmd_get


 

 

get命令(获取)总请求次数


 

 

cmd_set


 

 

set命令(保存)总请求次数


 

 

get_hits


 

 

总命中次数


 

 

get_misses


 

 

总未命中次数


 

 

evictions


 

 

为获取空闲内存而删除的items数(分配给memcache的空间用满后需要删除旧的items来得到空间分配给新的items


 

 

bytes_read


 

 

总读取字节数(请求字节数)


 

 

bytes_written


 

 

总发送字节数(结果字节数)


 

 

limit_maxbytes


 

 

分配给memcache的内存大小(字节)


 

 

threads


 

 

当前线程数


 



 

Java客户端调用memcached有三种方式:



1. 
Java自带的方式

Spring applicationContext.xml中设置


   1. <bean id="memcache"
class="com.danga.MemCached.SockIOPool"  


   2.    
factory-method="getInstance" init-method="initialize"  


   3.    
destroy-method="shutDown">  


   4.     <constructor-arg>  

  
5.        
<value>memcache</value>  


   6.    
</constructor-arg>  


   7.    
<property name="servers">  


  
8.         <list>  


  
9.            
<value>${memcache.server}</value>  


 
10.         </list>  


  11.    
</property>  


  12.     <property
name="initConn">  


 
13.        
<value>${memcache.initConn}</value>  


  14.    
</property>  


  15.     <property
name="minConn">  


 
16.        
<value>${memcache.minConn}</value>  


  17.    
</property>  


  18.     <property
name="maxConn">  


 
19.        
<value>${memcache.maxConn}</value>  


  20.    
</property>  


  21.     <property
name="maintSleep">  


 
22.        
<value>${memcache.maintSleep}</value>  


  23.    
</property>  


  24.     <property
name="nagle">  


 
25.         <value>${memcache.nagle}</value>  


  26.    
</property>  


  27.     <property
name="socketTO">  


 
28.        
<value>${memcache.socketTO}</value>  


  29.    
</property>  


  30. </bean>   



配置信息

memcache.server=192.168.0.9:11211

memcache.initConn=20

memcache.minConn=10

memcache.maxConn=50

memcache.maintSleep=30

memcache.nagle=false

memcache.socketTO=3000

memcached
常用方法:

1
、设置数据到内存

memCachedClient.set(key, value, cache
中存在时长);

2
、删除内存中的数据

memCachedClient.delete(key);

3
、取得内存中的数据

memCachedClient.get(key);

2. 
Xmemcached方式



java niomemcached客户端--xmemcached
memcache

1xmemcached是什么?

基于java nio实现的memcached客户端API

实际上是基于我实现的一个简单nio框架 http://code.google.com/p/yanf4j/ 的基础上实现的(目前是基于yanf4j
0.54)
,序列化机制直接挪用spymemcachedTranscoder

性能方面与spymemcached相比各有优势,spymemcachedwindowslinux两个平台上的效率差异很大(特别是容器类 大对象的读写上),而xmemcached就没有这个问题,如果你的get操作远远多于存储操作,那么xmemcached对于get的优化在并发下的效 果更加明显。

当前1.0-beta版本,支持memcached的分布式(余数哈希和一致性哈希算法)。目前已经支持getsetaddreplace cas appendprepend、批量get/getsdeleteincrdecrversion这几个协议。API为阻塞模型,而非 spymemcached的异步模型,异步模型在批处理的时候有优势,但是阻塞模型在编程难度和使用上会容易很多。

后续计划:1.0 正式稳定版1.1 着重性能优化

2、为什么叫xmemcached?



因为我在厦门(XM)混饭......



3xmemcached的下载和使用



项目主页:http://code.google.com/p/xmemcached下载地址:http://code.google.com/p/xmemcached/downloads/list

wiki地址:http://code.google.com/p/xmemcached/w/list



下载的压缩包中包括了依赖库、源码和打包后的jar,放到项目的lib目录下即可使用。使用:Java代码 



1. 
import net.rubyeye.xmemcached.XMemcachedClient;
  



2. 
   //XMemcachedClient是线程安全的,可以被多线程使用   



3. 
   XMemcachedClient client= new XMemcachedClient(ip, port);  



4. 
   //存储操作   



5. 
   if (!client.set( "hello" , 0 , "dennis" )){   



6. 
        System.err.println( "set
error" 
);
  



7. 
   }   



8. 
   client.add( "hello" , 0 , "dennis" );   



9. 
   client.replace( "hello" , 0 , "dennis" );   



10.
  



11.
   //get操作   



12.
   String name=(String)client.get( "hello" );   



13.
     



14.
   //批量获取   



15.
   List<String> keys= new ArrayList<String>();
  



16.
   keys.add( "hello" );   



17.
   keys.add( "test" );   



18.
   Map<String,Object> map=client.get(keys);   



19.
  



20.
   //delete操作   



21.
   if (!client.delete( "hello" , 1000 )){   



22.
        System.err.println( "delete
error" 
);
  



23.
   }   



24.
  



25.
   //incr,decr操作   



26.
   client.incr( "a" , 4 );   



27.
   client.decr( "a" , 4 );   



28.
  



29.
   //查看memcached版本   



30.
   String version=client.version();   



31.
      



32.
   client.shutdown();   



33.
    



xmemcachedspymemcached的对比 
1
xmemcachedspymemcached有更好的性能表现,在getsetdeletemulti-gets等操作的测试中都远远超过或者接近spymemcached xmemcachedwin32linux两个平台上都有极佳的性能表现。
2
xmemcached支持动态地添加或者移除memcached
server,
可以通过编程或者JMX来做到。
3
xmemcached支持JMX,可以通过jmx调整性能参数、添加/移除memcached节点、查看统计
4
xmemcached有客户端统计,可以统计xmemcached客户端的各种操作的总次数
5
xmemcached允许调整更多的网络层参数和优化选项.
6
xmemcached暂未支持二进制协议,计划在1.2版本中实现。
7
xmemcachedAPI模型是同步的,而spymemcachedAPI模型是异步模型,同步模型对应用编程来说更容易使用和直观。

8xmemcached的序列化机制,是使用了spymemcached的序列化机制,并做了部分改造。

项目主页:http://code.google.com/p/xmemcached/

Java memcached 客户端——XMemcached 发布1.2.5版本,这是1.2的最后一个小版本,主要的改进如下:

1、合并yanf4jxmemcached,目前只是简单的源码合并,以及去除了不需要的udp支持。因此从1.2.5开始,xmemcached 不再依赖yanf4j,仅依赖slf4j 

2、支持SASL验证。memcached 1.4.3新增了SASL授权特性,启用了SASLmemcached会要求客户端进行授权验证,否则将拒绝请求,对于需要验证的用户来说是个可选的特性,关于memcachedSASL支持更多请看这里Xmemcached 1.2.5开始支持客户端的SASL验证,一个典型的使用例子如下:



Java代码 





1. 
MemcachedClientBuilder builder = new XMemcachedClientBuilder(
  



2. 
                                
AddrUtil.getAddresses(
 "localhost:11211" ));   



3. 
builder.addAuthInfo(AddrUtil.getOneAddress( "localhost:11211" ), AuthInfo   



4. 
                                
.typical(
 "cacheuser" , "123456" ));   



5. 
// Must use binary protocol   



6. 
builder.setCommandFactory( new BinaryCommandFactory());
  



7. 
MemcachedClient client=builder.build();  



3、加快MemcachedClient.shutdown()方法的速度,应用可以更快地关闭xmemcached

4、完善中文用户指南 ,添加客户端分布和SASL验证两节。

更多信息请参见wikichangelog

XMemcached是一个基于java
nio
memcached 客户端

项目主页: http://code.google.com/p/xmemcached/

下载地址: http://code.google.com/p/xmemcached/downloads/list

wiki地址:http://code.google.com/p/xmemcached/w/list

你可能感兴趣的:(Memcached)