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

[经验分享] Memcache与python

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-11-18 11:08:27 | 显示全部楼层 |阅读模式
理解一些概念:
Memcache是一个自由和开放源代码、高性能、分配的内存对象缓存系统。用于加速动态web应用程序,减轻数据库负载。它可以应对任意多个连接,使用非阻塞的网络IO。由于它的工作机制是在内存中开辟一块空间,然后建立一个HashTable,Memcached自管理这 些HashTable。Memcached是简单而强大的。它简单的设计促进迅速部署,易于发展所面临的问题,解决了很多大型数据缓存。它的API可供最流行的语言。Memcache是该系统的项目名称,Memcached是该系统的主程序文件,以守护程序方式运行于一个或多个服务器中,随时接受客户端的连接操作,使用共享内存存取数据。
Memcached最吸引人的一个特性就是支持分布式部署;也就是说可以在一群机器上建立一堆Memcached服务,每个服务可以根据具体服务器的硬件配置使用不同大小的内存块,这样一来,理论上可以建立一个无限巨大的基于内存的cache storage系统。

1.分别把memcached和libevent下载回来,放到 /tmp 目录下
Memcache用到了libevent这个库用于Socket的处理,所以还需要安装libevent。

1$ cd /tmp2$wget http://www.danga.com/memcached/dist/memcached-1.2.0.tar.gz3$wget http://www.monkey.org/~provos/libevent-1.2.tar.gz2.先安装libevent
1$ tar zxvflibevent-1.2.tar.gz2$ cd libevent-1.23$./configure –prefix=/usr4$ make5$ make install
3.测试libevent是否安装成功

1$ ls -al/usr/lib | grep libevent2lrwxrwxrwx1 root root 21 11?? 12 17:38 libevent-1.2.so.1 -> libevent-1.2.so.1.0.33-rwxr-xr-x1 root root 263546 11?? 12 17:38 libevent-1.2.so.1.0.34-rw-r–r–1 root root 454156 11?? 12 17:38 libevent.a5-rwxr-xr-x1 root root 811 11?? 12 17:38 libevent.la6lrwxrwxrwx1 root root 21 11?? 12 17:38 libevent.so -> libevent-1.2.so.1.0.3还不错,都安装上了。
4.安装memcached,同时需要安装中指定libevent的安装位置

1$ cd /tmp2$ tar zxvfmemcached-1.2.0.tar.gz3$ cd memcached-1.2.04$./configure –with-libevent=/usr   # 注意这个配置跟着libevent走5$ make6$ make install如果中间出现报错,请仔细检查错误信息,按照错误信息来配置或者增加相应的库或者路径。
安装完成后会把memcached放到 /usr/local/bin/memcached ,
5.测试是否成功安装memcached

1$ ls -al/usr/local/bin/mem*2-rwxr-xr-x1 root root 137986 11?? 12 17:39 /usr/local/bin/memcached3-rwxr-xr-x1 root root 140179 11?? 12 17:39 /usr/local/bin/memcached-debug6 安装python-memcached安装
1$ sudo apt-get install python-memcachememcached运行参数:
1/usr/local/memcached/bin/memcached-d -m 128 -u root -l 192.168.0.97 -c 256 -P /tmp/memcached.pid-d选项是启动一个守护进程,
-m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,
-u是运行Memcache的用户,我这里是root,
-l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.22.200(不指定为本机)
-p是设置Memcache监听的端口,我这里设置了12000,最好是1024以上的端口,
-c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
-P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid,

python使用例子:
1#!/usr/bin/envpython2import memcache3mc= memcache.Client(['127.0.0.1:12000'],debug=0)4mc.set("foo","bar")5value= mc.get("foo")6printvaluePython-memcached API总结
整个memcache.py只有1241行,相当精简
主要方法如下:
@set(key,val,time=0,min_compress_len=0)
无条件键值对的设置,其中的time用于设置超时,单位是秒,而min_compress_len则用于设置zlib压缩(注:zlib是提供数据压缩用的函式库)
@set_multi(mapping,time=0,key_prefix=”,min_compress_len=0)
设置多个键值对,key_prefix是key的前缀,完整的键名是key_prefix+key, 使用方法如下
>>> mc.set_multi({‘k1′ : 1, ‘k2′ : 2}, key_prefix=’pfx_’) == []
>>> mc.get_multi(['k1', 'k2', 'nonexist'], key_prefix=’pfx_’) == {‘k1′ : 1, ‘k2′ : 2}
@add(key,val,time=0,min_compress_len=0)
添加一个键值对,内部调用_set()方法
@replace(key,val,time=0,min_compress_len=0)
替换value,内部调用_set()方法
@get(key)
根据key去获取value,出错返回None
@get_multi(keys,key_prefix=”)
获取多个key的值,返回的是字典。keys为key的列表
@delete(key,time=0)
删除某个key。time的单位为秒,用于确保在特定时间内的set和update操作会失败。如果返回非0则代表成功
@incr(key,delta=1)
自增变量加上delta,默认加1,使用如下
>>> mc.set(“counter”, “20″)
>>> mc.incr(“counter”)
@decr(key,delta=1)
自减变量减去delta,默认减1

运维网声明 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-140647-1-1.html 上篇帖子: Memcache升级版之CouchBase [一]服务器安装配置详解 下篇帖子: Memcache的容量设置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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