Home  >  Article  >  Database  >  [转]memCached 客户端

[转]memCached 客户端

WBOY
WBOYOriginal
2016-06-07 16:30:431099browse

memcache客户端下载 http://code.google.com/p/memcached/wiki/Clients ----------------------------------------------------------------------------------------------------------------------------------- memcached是什么? 许多Web应用都将数据保


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 客户端

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn