python-memcached模块
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。
来自为知笔记(Wiz)
以上是 python-memcached模块 的全部内容, 来源链接: utcz.com/z/388702.html