Memcache与python
来源:互联网 发布:淘宝的电子商务系统 编辑:程序博客网 时间:2024/06/11 17:29
理解一些概念:
Memcache是一个自由和开放源代码、高性能、分配的内存对象缓存系统。用于加速动态web应用程序,减轻数据库负载。它可以应对任意多个连接,使用非阻塞的网络IO。由于它的工作机制是在内存中开辟一块空间,然后建立一个HashTable,Memcached自管理这 些HashTable。Memcached是简单而强大的。它简单的设计促进迅速部署,易于发展所面临的问题,解决了很多大型数据缓存。它的API可供最流行的语言。Memcache是该系统的项目名称,Memcached是该系统的主程序文件,以守护程序方式运行于一个或多个服务器中,随时接受客 户端的连接操作,使用共享内存存取数据。
Memcached最吸引人的一个特性就是支持分布式部署;也就是说可以在一群机器上建立一堆Memcached服务,每个服务可以根据具体服务器的硬件配置使用不同大小的内存块,这样一来,理论上可以建立一个无限巨大的基于内存的cache storage系统。
1.分别把memcached和libevent下载回来,放到 /tmp 目录下
Memcache用到了libevent这个库用于Socket的处理,所以还需要安装libevent。
1
$
cd
/tmp
2
$ wget http://www.danga.com/memcached/dist/memcached-1.2.0.
tar
.gz
3
$ wget http://www.monkey.org/~provos/libevent-1.2.
tar
.gz
2.先安装libevent
1
$
tar
zxvf libevent-1.2.
tar
.gz
2
$
cd
libevent-1.2
3
$ ./configure –prefix=/usr
4
$
make
5
$
make
install
3.测试libevent是否安装成功
1
$
ls
-al /usr/lib |
grep
libevent
2
lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent-1.2.so.1 -> libevent-1.2.so.1.0.3
3
-rwxr-xr-x 1 root root 263546 11?? 12 17:38 libevent-1.2.so.1.0.3
4
-rw-r–r– 1 root root 454156 11?? 12 17:38 libevent.a
5
-rwxr-xr-x 1 root root 811 11?? 12 17:38 libevent.la
6
lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent.so -> libevent-1.2.so.1.0.3
还不错,都安装上了。
4.安装memcached,同时需要安装中指定libevent的安装位置
1
$
cd
/tmp
2
$
tar
zxvf memcached-1.2.0.
tar
.gz
3
$
cd
memcached-1.2.0
4
$ ./configure –with-libevent=/usr # 注意这个配置跟着libevent走
5
$
make
6
$
make
install
如果中间出现报错,请仔细检查错误信息,按照错误信息来配置或者增加相应的库或者路径。
安装完成后会把memcached放到 /usr/local/bin/memcached ,
5.测试是否成功安装memcached
1
$
ls
-al /usr/
local
/bin/mem*
2
-rwxr-xr-x 1 root root 137986 11?? 12 17:39 /usr/
local
/bin/memcached
3
-rwxr-xr-x 1 root root 140179 11?? 12 17:39 /usr/
local
/bin/memcached-debug
6 安装python-memcached安装
1
$
sudo
apt-get
install
python-memcache
memcached运行参数:
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/env python
2
import
memcache
3
mc = memcache.Client([
'127.0.0.1:12000'
],debug=0)
4
mc.
set
(
"foo"
,
"bar"
)
5
value = mc.get(
"foo"
)
6
print value
Python-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
- Memcache与python
- Memcache与python
- python memcache安装与使用
- python 使用memcache
- Python memcache 上传数据
- Python RabbitMQ.Redis,Memcache
- python 安装memcache模块
- Python之memcache(一)
- Python之memcache(二)
- Ubuntu下安装memcache,以及python-memcache
- PHP 与Memcache 分布式
- memcache与memcached
- memcache与redis对比
- Redis 与 Memcache
- mysql与memcache结合
- nginx与memcache
- Memcache 安装与管理
- Memcache 安装与使用
- Sizeof与Strlen的区别与联系
- 这两周的学校生涯回顾
- qq聊天布局思路
- UVA 10617 区间DP
- Android: SystemUI
- Memcache与python
- POJ2387 Til the Cows Come Home -DIJKSTRA 练习
- CentOS 7安装fcitx中文输入法
- UIImageView摘录(持续更新)
- Tease Apart Inheritance
- 关于HoTween移动
- 弱联网手游如何防作弊?
- 我的csdn之旅启程
- [MFC] CButtonST