设为首页 收藏本站
查看: 1570|回复: 0

[经验分享] memCached 客户端

[复制链接]

尚未签到

发表于 2015-11-19 07:33:33 | 显示全部楼层 |阅读模式


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"),使用以下的命令安装:


  • C:/memcached-1.2.1-win32/memcached.exe -d install  
  
安装完成之后,再执行以下命令来启动memcached:


  • C:/memcached-1.2.1-win32/memcached.exe -d start   
  
这样memcached会使用默认的端口(11211)来启动,启动成功的话,你可以在任务管理器中看到memcached.exe

DSC0000.gif

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目录下:


  • cd c:/python-memcached-1.45  
  

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


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

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

[python] viewplaincopy

  • import memcache  
  • #创建连接  
  • mc_client = memcache.Client(['127.0.0.1:11211'], debug=0)  
  • #写、读  
  • mc_client.set("key_a", "value_a")  
  • value = mc_client.get("key_a")  
  • print "key_a 's value in memcached is: %s" %(value)  
  • #删  
  • mc_client.delete("key_a")  
  • value = mc_client.get("key_a")  
  • print "key_a 's value in memcached after deleted is: %s" %(value)  
  • #自增、自减  
  • mc_client.set("count_key", "11")  
  • value = mc_client.get("count_key")  
  • print "general value: ", value  
  • mc_client.incr("count_key")  
  • value = mc_client.get("count_key")  
  • print "general value after increment: ", value  
  • mc_client.decr("count_key")  
  • value = mc_client.get("count_key")  
  • print "general value after decrement: ", value  



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



  • key_a 's value in memcached is: value_a  
  • key_a 's value in memcached after deleted is: None  
  • general value:  11  
  • general value after increment:  12  
  • 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分支,具有如下重大改进:

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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-140862-1-1.html 上篇帖子: Memcached源码阅读之初始化参数解析 下篇帖子: Redis和Memcached的选择
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表