python-memcached模块

memcache

memcache介绍

memcache概念

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。

关于存储

为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中,并没有持久化到硬盘。由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。


memcache安装及使用

Memcached安装:

1
2
3
4
5
6
7
8
wget http://memcached.org/latest
tar -zxvf memcached-1.x.x.tar.gz
cd memcached-1.x.x
./configure && make && make test && sudo make install
  
PS:依赖libevent
       yum install libevent-devel
       apt-get install libevent-dev

启动memcache:

1
2
3
4
5
6
7
8
9
10
memcached -d -m 10    -u root -l 10.211.55.4 -p 12000 -c 256 -P /tmp/memcached.pid
  
参数说明:
    -d 是启动一个守护进程
    -m 是分配给Memcache使用的内存数量,单位是MB
    -u 是运行Memcache的用户
    -l 是监听的服务器IP地址
    -p 是设置Memcache监听的端口,最好是1024以上的端口
    -c 选项是最大运行的并发连接数,默认是1024,按照你服务器的负载量来设定
    -P 是设置保存Memcache的pid文件

memcache命令:

1
2
3
存储命令: set/add/replace/append/prepend/cas
获取命令: get/gets
其他命令: delete/stats..

可视化工具Memadmin:

用php写的一个管理页面,下载方式 #git clone https://github.com/junstor/memadmin


python-memcache-API

安装API:

1
2
python操作Memcached使用Python-memcached模块
下载安装:https://pypi.python.org/pypi/python-memcached

基本操作:

1
2
3
4
5
6
7
import memcache
 
mc = memcache.Client(['192.168.136.8:11211'], debug=1)   #开启debug模式
    #server可以是加入weight的tuple:[(ip:port,weight),.....]
mc.set("foo", "bar")
ret = mc.get('foo')
print ret      #结果 ==> bar


memcache和redis的比较

差异:

  • 性能都很高,无大差异;

  • Redis只使用单核,而Memcached可以使用多核,平均每一个核上Redis在存储小数据时比Memcached性能更高

  • 简单的key-value存储,Memcached的内存利用率更高,而如果Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcached,当然,这和你的应用场景和数据特性有关;

  • Redis相比Memcached来说,拥有更多的数据结构和并支持更丰富的数据操作,通常在 Memcached里,你需要将数据拿到客户端来进行类似的修改再set回去。这大大增加了网络IO的次数和数据体积。在Redis中,这些复杂的操作通 常和一般的GET/SET一样高效。

选型:

  • 存储100k以上用memcache,以下用redis,其实无论你使用哪一个,每秒处理请求的次数都不会成为瓶颈(比如瓶颈可能会在网卡)

  • 需要更多的数据结构和并支持更丰富的数据操作,用redis;

  • 对数据持久化和数据同步有所要求,那么推荐你选择Redis。















posted @ 2016-01-18 11:21  大亮头  阅读(679)  评论(0编辑  收藏  举报