Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1061332
  • 博文数量: 321
  • 博客积分: 7872
  • 博客等级: 少将
  • 技术积分: 2120
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-16 09:06
文章分类

全部博文(321)

文章存档

2017年(1)

2016年(1)

2015年(12)

2014年(17)

2013年(78)

2012年(15)

2011年(17)

2010年(67)

2009年(102)

2008年(11)

分类: LINUX

2013-07-02 16:53:56

Memcached官网 

简单介绍

Memcached很强大,它可以支持分布式的共享内存缓存,大型站点都用它。对小站点来说,有足够内存的话,使用它也可以得到超赞的效果。

使用目的

由前面的介绍看到,大家使用它都是为了速度,不过我却是为了解决Session在不同浏览器中偶尔丢失的数据。其实也不能怪浏览器啦,主要是我需要一个dict类型的session。

安装

Linux

安装

1

2

3

4

5

# Debian/Ubuntu

sudo apt-get install memcached

 

# Redhat/Fedora/CentOS

sudo yum install memcached

启动Memcached

1

2

3

4

5

6

7

8

9

10

-d 选项是启动一个守护进程

-m 是分配给Memcache使用的内存数量,单位是MB,默认64MB

-M return error on memory exhausted (rather than removing items)

-u 是运行Memcache的用户,如果当前为root 的话,需要使用此参数指定用户

-l 是监听的服务器IP地址,默认为所有网卡

-p 是设置MemcacheTCP监听的端口,最好是1024以上的端口

-c 选项是最大运行的并发连接数,默认是1024

-P 是设置保存Memcachepid文件

-f chunk size growth factor (default: 1.25)

-I Override the size of each slab page. Adjusts max item size(1.4.2版本新增)

例子

1

/usr/local/memcached/bin/memcached -d -m 100 -c 1000 -u root -p 11211

可以启动多个守护进程,但是端口不能重复。 设置开机启动的话可以将上行命令增加到/etc/rc.d/rc.local文件中。

Windows

1.       下载memcache的windows稳定版 

2.       解压放某个盘下面,比如在c:\memcached

3.       在终端(也即cmd命令界面)cd到解压目录(这里是c:\memcached),运行 memcached.exe -d install 安装服务

4.       运行memcached.exe -d start,memcached会使用默认的端口(11211)来启动,你可以在任务管理器中看到memcached.exe

Python 操作 Memcached

memcached API地址

网上流传说Python-API中效率最高的是python-libmemcached,这里居然看到了hongqn(豆瓣首席架构师,后来也得到证实python-libmemcached是豆瓣贡献,看来豆瓣的阳光真的是撒满了Python的各个角落)。

另外还有python-memcached(100%纯Python),python-memcache(据说有内存泄漏问题?),cmemcache(代码多年未更新?)。

不过由于目前需要中效率并没有太高要求,于是选择了使用最多的python-memcached: 安装 python-memcached

1

sudo easy_install python-memcached

Python操作memcached

1

2

3

4

5

import memcache

mc = memcache.Client(['127.0.0.1:11211'],debug=True)

mc.set('name','luo',60)

print mc.get('name')

mc.delete('name')

Memcached常用方法

memcache其实是一个map结构,最常用的几个函数:

保存数据

1

2

3

set(key,value,timeout) key映射到valuetimeout指的是什么时候这个映射失效

add(key,value,timeout)  仅当存储空间中不存在键相同的数据时才保存

replace(key,value,timeout) 仅当存储空间中存在键相同的数据时才保存

获取数据

1

2

get(key) 返回key所指向的value

get_multi(key1,key2,key3,key4) 可以非同步地同时取得多个键值, 比循环调用get快数十倍

删除数据

1

delete(key, timeout) 删除键为key的数据,timeout为时间值,禁止在timeout时间内名为key的键保存新数据(set函数无效)。

 

转自:http://liluo.org/blog/2011/03/memcached-install-and-using/

阅读(652) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~