python-memcached模块
memcache
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:
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。
安装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。
差异:
性能都很高,无大差异;
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。
python-memcached模块的更多相关文章
- python 常用模块(转载)
转载地址:http://codeweblog.com/python-%e5%b8%b8%e7%94%a8%e6%a8%a1%e5%9d%97/ adodb:我们领导推荐的数据库连接组件bsddb3:B ...
- day02 Python 的模块,运算,数据类型以及方法
初识pyhton的模块: 什么是模块: 我的理解就是实现一个功能的函数,把它封装起来,在你需要使用的时候直接调用即可,我的印象里类似于shell 的单独函数脚本. python 的模块分为标准的和第三 ...
- Python标准模块--threading
1 模块简介 threading模块在Python1.5.2中首次引入,是低级thread模块的一个增强版.threading模块让线程使用起来更加容易,允许程序同一时间运行多个操作. 不过请注意,P ...
- Python的模块引用和查找路径
模块间相互独立相互引用是任何一种编程语言的基础能力.对于“模块”这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义.对于编译型的语言,比如C#中 ...
- Python Logging模块的简单使用
前言 日志是非常重要的,最近有接触到这个,所以系统的看一下Python这个模块的用法.本文即为Logging模块的用法简介,主要参考文章为Python官方文档,链接见参考列表. 另外,Python的H ...
- Python标准模块--logging
1 logging模块简介 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级.日志保存路径.日志文件回滚等:相比print,具备如下优点: 可以通过设置不同 ...
- python基础-模块
一.模块介绍 ...
- python 安装模块
python安装模块的方法很多,在此仅介绍一种,不需要安装其他附带的pip等,python安装完之后,配置环境变量,我由于中英文分号原因,环境变量始终没能配置成功汗. 1:下载模块的压缩文件解压到任意 ...
- python Queue模块
先看一个很简单的例子 #coding:utf8 import Queue #queue是队列的意思 q=Queue.Queue(maxsize=10) #创建一个queue对象 for i in ra ...
- python logging模块可能会令人困惑的地方
python logging模块主要是python提供的通用日志系统,使用的方法其实挺简单的,这块就不多介绍.下面主要会讲到在使用python logging模块的时候,涉及到多个python文件的调 ...
随机推荐
- numpy 矩阵相关函数
我们 知道,矩阵在python里面用的不少,所以记载下关于矩阵的操作 numpy.zeros():可以用来构造全零矩阵 >>> zeros(3) array([ 0., 0., ...
- C#编程的几个建议
1.属性(properties) 抽象属性可以放在接口的定义里.如: public interface INameValuePair<T> { string Nam ...
- next.js 简单使用
1. 介绍 一个react.js 服务器端渲染开源项目(不只是服务器端渲染,直接也可以生成纯静态站点) 类似的解决方案有好多,比如react.js 自身的服务器渲染方案(但是使用起来就是比较怪异) g ...
- XML的应用 ---- 从一个范例看xml数据、xsd验证、xslt样式
从一个范例看XML的应用 引言 如果你已经看了Asp.Net Ajax的两种基本开发模式 这篇文章,你可能很快会发现这样一个问题:在那篇文章的方式2中,客户端仅仅是发送了页面上一个文本框的内容到服务端 ...
- 【转】Python自动化测试 (一) Eclipse+Pydev 搭建开发环境
原文网址:http://www.cnblogs.com/TankXiao/archive/2013/05/29/3033640.html C#之所以容易让人感兴趣,是因为安装完Visual Studi ...
- maven搭建
http://blog.csdn.net/zhshulin/article/details/30779873 http://blog.csdn.net/zhshulin/article/details ...
- 1020. Tree Traversals (25) ——树的遍历
//题目 通过后续遍历 中序遍历 得出一棵树 ,然后按树的层次遍历打印 PS:以前对于这种用指针的题目是比较头痛的,现在做了一些链表操作后,感觉也不难 先通过后续中序建一棵树,然后通过BFS遍历这棵树 ...
- 几个ssh和sftp的命令
sudo apt-get install openssh-server 装server sudo /etc/init.d/ssh stop sudo /etc/init.d/ssh start sud ...
- EditText动态转换只读/编辑状态
public class MyActivity extends Activity { private KeyListener listener; private EditText editText; ...
- 监控mysql 脚本
监控mysql脚本 http://oldboy.blog.51cto.com/2561410/986905