[转]memCached 客户端

标签: | 发表时间:2013-06-08 11:41 | 作者:zeo112140
出处:http://blog.csdn.net/zeo112140


memcache客户端下载

http://code.google.com/p/memcached/wiki/Clients


-----------------------------------------------------------------------------------------------------------------------------------


memcached是什么?

许多Web应用都将数据保存到DBMS中,应用服务器从中读取数据并在浏览器中显示。 但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、 网站显示延迟等重大影响。

memcached 是以LiveJournal 旗下Danga Interactive 公司的Brad Fitzpatric 为首开发的一款软件。memcached是高性能的分布式内存缓存服务器,也就是可以允许不同主机上的多个用户同时访问这个缓存系统,这种方法不仅解决了共享内存只能是单机的弊端,同时也解决了数据库检索的压力,最大的优点是提高了访问获取数据的速度。 一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、 提高可扩展性。一般情况下memcached的用途如下:

Memcached的内置内存存储方式

为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。所以我们在取值时,应考虑缓存中的数据已经被替换掉或者是程序员自已对数据置了过期时间的情况。即应判断 get(key)==null的情况。

Memcached的架构:

memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。各个memcached不会互相通信以共享信息。那么,怎样进行分布式完全取决于客户端的实现。

memcached的分布式:

我们采用的memcached for java client所使用的分布式算法是Consistent Hashing算法。

windows下memCached服务器端搭建:

1.       下载 memcache(http://jehiah.cz/projects/memcached-win32/)的windows稳定版,解压到某一路径,即为memcached_home。

2.       在终端(也即cmd命令界面)下输入 ‘%memcached_home%"memcached.exe -d install’ 安装

3.       再输入: ‘%memcached_home%"memcached.exe -d start’ 启动。注意: 以后memcached将作为windows的一个服务每次开机时自动启动,这样服务器端已经安装完毕了。

4.       Memcached常用参数说明:

memcached -d –m 1024  -l 192.200.1.75 -p 11211

-d 以守护程序(daemon)方式运行 memcached;

-m 设置 memcached可以使用的内存大小,单位为 M;

-l 设置监听的 IP 地址,如果是本机的话,通常可以不设置此参数;

-p 设置监听的端口,默认为 11211,所以也可以不设置此参数;

Linux下的安装:

memcached安装与一般应用程序相同,configure、make、make install就行了。

$ wget http://www.danga.com/memcached/dist/memcached­1.2.5.tar.gz

$ tar zxf memcached­1.2.5.tar.gz

$ cd memcached­1.2.5

$ ./configure

$ make

$ sudo make install

默认情况下memcached安装到/usr/local/bin下。

从终端输入:$ /usr/local/bin/memcached ­p 11211 ­m 64m ­vv即可启动memcached

Memcached的java客户端的使用。

1.       下载Memcached 的java客户端包( http://www.whalin.com/memcached/#download)

2.       根据不同版本构建到工程中。

3.       由于Memcached的客户端在处理大对象的序列化时,效率较差,通过hessian的序列化工具进行了相应模块的替换。优化后的memcached java client 加入到项目构建路径中即可。

4.       调用方法详见API。

5.       依赖的包及生成后的memcached的包:










-----------------------------------------------------------------------------------------------------------------------------------









Memcached 是danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能。

    网上有很多讲到Memcached For Linux的安装教程,但是Memcached For Win32 and Python的就甚少,偶尔google找到一篇
比较相近的英文教程,觉得很不错就打算翻译下来,并且写一个Hello World的memcached实例。

安装部分来自 原文 

1.下载 memcached 1.2.1 for Win32 .

 

2.把memcached-1.2.1-win32.zip解包到你想要的路径下 (如:C:/memcached-1.2.1-win32)

 

3.打开命令行(在开始菜单中的"运行",输入"cmd"),使用以下的命令安装: 
 

  1. C:/memcached-1.2.1-win32/memcached.exe -d install  

安装完成之后,再执行以下命令来启动memcached:

  1. C:/memcached-1.2.1-win32/memcached.exe -d start    

这样memcached会使用默认的端口(11211)来启动,启动成功的话,你可以在任务管理器中看到memcached.exe

 

 

4.为了和memcached通信,你需要安装一个memcached客户端 ,来对memcached做“增删改”操作。memcached有很多个客户
端程序可以使用,对应于各种语言,有各种语言的客户端。基于C语言的有libmemcache、 APR_Memcache;基于Perl的有Cache::Memcached;另外还有Php、Python、Ruby、Java、C#等语言的支持。其中PHP的客户端是最多的,你可以在网上搜
索到大部分,这里我只介绍python的客户端。

5.获取最新版的memcached python客户端: python-memcached-latest.tar.gz 

6.把python-memcached-latest.tar.gz解压到任意路径
 (如c:/python-memcached-1.45)

7.在命令行中cd到c:/python-memcached-1.45目录下: 
 

  1. cd c:/python-memcached-1.45  

 

8.然后运行以下命令安装python-memcached: 

  1. python setup.py build  
  2. python setup.py install  

这样python-memcached就成功安装到python库中。如果提示ImportError: No module named setuptools ,请先安装
setuptools for win32 。

9.运行以下代码来测试python-memcached是否成功安装 

[python]  view plain copy
  1. import memcache  
  2. #创建连接  
  3. mc_client = memcache.Client(['127.0.0.1:11211'], debug=0)  
  4. #写、读  
  5. mc_client.set("key_a", "value_a")  
  6. value = mc_client.get("key_a")  
  7. print "key_a 's value in memcached is: %s" %(value)  
  8. #删  
  9. mc_client.delete("key_a")  
  10. value = mc_client.get("key_a")  
  11. print "key_a 's value in memcached after deleted is: %s" %(value)  
  12. #自增、自减  
  13. mc_client.set("count_key", "11")  
  14. value = mc_client.get("count_key")  
  15. print "general value: ", value  
  16. mc_client.incr("count_key")  
  17. value = mc_client.get("count_key")  
  18. print "general value after increment: ", value  
  19. mc_client.decr("count_key")  
  20. value = mc_client.get("count_key")  
  21. print "general value after decrement: ", value  



成功的话会显示以下内容:

 

  1. key_a 's value in memcached is: value_a  
  2. key_a 's value in memcached after deleted is: None  
  3. general value:  11  
  4. general value after increment:  12  
  5. general value after decrement:  11  

至此,Memcached For Win32 和 Memcached Python Client安装完成。





-------------------------------------------------------------------------------------------------------------




Memcached是被广泛使用的分布式缓存技术。不同的语言有不同的Memcached客户端程序,对于Java客户端来说,首推Memcached Java Client(http://github.com/gwhalin/Memcached-Java-Client )。

这次,Memcached Java Client推出的2.6.1发布版是基于全新的performance分支,具有如下重大改进:

  1. 较之老版本,在性能上有300%左右的提升;
  2. 兼容老版本,用户无须修改自己的源代码;
  3. 支持多个memcached协议,包括text,udp和binary协议;
  4. 支持SASL认证机制;
  5. 重新实现的连接池,修复了之前的连接数太多所导致的OutOfMemory异常;
  6. 加入了slf4j logger支持,使得开发人员可以方便的记录日志;
  7. 支持自定义的对象序列化方法。

这个分支由Schooner Information Technology贡献,并由Schooner中国团队完成开发,开发者是:

王新根,new.root@gmail.com;

李蒙,jowett.lee@gmail.com。

可以从这里下载二进制包:https://github.com/gwhalin/Memcached-Java-Client/downloads

源代码在github上,http://github.com/gwhalin/Memcached-Java-Client ,然后选择performance分支。

下面是一些性能测试的数据,包括了当前流行的Memcached Java Client。

其中,schooner指的是这个分支的text protocol, schooner_bin指的是binary protocol。

 

 

 

 


作者:zeo112140 发表于2013-6-8 11:41:06 原文链接
阅读:13 评论:0 查看评论

相关 [memcached 客户端] 推荐:

[转]memCached 客户端

- - 小鸥的博客
memcache客户端下载. 许多Web应用都将数据保存到DBMS中,应用服务器从中读取数据并在浏览器中显示. 但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、 网站显示延迟等重大影响. memcached 是以LiveJournal 旗下Danga Interactive 公司的Brad Fitzpatric 为首开发的一款软件.

memcached+magent实现memcached集群

- - 编程语言 - ITeye博客
首先说明下memcached存在如下问题.   本身没有内置分布式功能,无法实现使用多台Memcache服务器来存储不同的数据,最大程度的使用相同的资源;无法同步数据,容易造成单点故障. (memagent代理实现集群).       在 Memcached中可以保存的item数据量是没有限制的,只要内存足够.

MemCached详解

- - CSDN博客推荐文章
首先,我们来了解一下MemCached与MemCache之间的区别:. Memcache是一个自由和开放源代码、高性能、分配的内存对象缓存系统. 用于加速动态web应用程序,减轻数据库负载. 它可以应对任意多个连接,使用非阻塞的网络IO. 由于它的工作机制是在内存中开辟一块空间,然后建立一个HashTable,Memcached自管理这 些HashTable.

Memcached调优

- - 四火的唠叨
文章系本人原创,转载请保持完整性并注明出自 《四火的唠叨》. 项目中有一个对实时响应性比较高的服务,引入了Memcached以减少延迟和减少数据库压力. 但是期间遇到了一些问题,这里记录一些调优细节. 最开始我使用的是 Memcached Java Client,但是最后放弃了,放弃原因包括:.

memcached协议

- - 开源软件 - ITeye博客
旧版: http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt. 新版: https://github.com/memcached/memcached/blob/master/doc/protocol.txt.

Java使用memcached

- - 互联网 - ITeye博客
首先到 http://danga.com/memcached下载memcached的windows版本和java客户端jar包,目前最新版本是memcached-1.2.1-win32.zip和java_memcached-release_1.6.zip,分别解压后即可. 然后是安装运行memcached服务器,我们将memcached-1.2.1-win32.zip解压后,进入其目录,然后运行如下命令:c:>;memcached.exe -d install
c:>memcached.exe -l 127.0.0.1 -m 32 -d start.

Spring+memcached整合

- - 行业应用 - ITeye博客
1)  下载memcached服务端memcached-1.2.6-win32-bin.zip,地址:http:. 2)  下载java版客户端 java_memcached-release_2.6.1.zip. 3)  解压缩memcached-1.2.6-win32-bin.zip到指定目录,例如:D:\memcached-1.2.6-win32 ,.

转 redis vs memcached

- - 数据库 - ITeye博客
传统MySQL+ Memcached架构遇到的问题.   实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题:.   1.MySQL需要不断进行拆库拆表,Memcached也需不断跟着扩容,扩容和维护工作占据大量开发时间.

Memcached安全性

- - xiaobaoqiu Blog
1.Memcached -l参数. 1.Memcached -l参数. 最近整理了组内使用的Memcached. 发现很多问题,其中一个问题就是开发机器测试机器可以直连线上的Memcached. 这也是memcached公认的问题:memcached 是一种很简单、有效的协议,但也有其缺点,就是 memcached 自身没有 ACL 控制(或者相当弱).

Memcached的LRU算法

- Eric - 平凡的世界
最近计划对Memcached做一些尝试性的改造,主要是针对Memcached在处理过期数据的时候进行改造,以实现在一个缓存的过期时间达到的时候,可以对该缓存的数据进行一个验证和存储的处理. 这个需求,主要是为了解决MySQL的写入瓶颈,通过延期、合并写入请求来减少MySQL的并发写入量. 现在逐渐记录出来和有需要的朋友一起讨论.