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文件的调 ...
随机推荐
- #503. 「LibreOJ β Round」ZQC 的课堂 容斥原理+Treap
题目: 题解: 比较容易发现 : \(x,y\) 的贡献是独立的. 所以可以分开考虑. 假设我们考虑 \(x\).向量在 \(x\) 方向的投影依次是 : \(\{a_1,a_2, ... ,a_n\ ...
- gerrit简版教程
设置public key 1.生成密钥:ssh-keygen -t rsa -C "xiaoming" 2.查看是否已经有了ssh密钥:cd ~/.ssh 3.不知道为什么hook ...
- Hbase 参数配置及优化
From:http://www.open-open.com/lib/view/open1346684547787.html 接触hbase已有半年的时间,查了很多资料,也参考了很多别人心得,也希望把自 ...
- 使用nagios插件 check_mysql_health 过程中遇到的error
使用nagios插件 check_mysql_health 过程中遇到的error 1.如果在运行监控mysql插件的时候遇到了error安装以下依赖包就可以解决: yum install perl- ...
- ODBC、OLEDB、ADO、SQL的关系
对于一个刚接触数据库的菜鸟来说(比如我),总是搞不清SQL.ADO.OLE DB.ODBC,大脑中一片混乱,好像懂了,又好像没懂,非常的苦恼,今天下了点功夫研究了一下,贴出来,其中肯定有好多错误,希望 ...
- java工具类mht转html格式文件 及简单的HTML解析
package com.szy.project.utils; import java.io.BufferedInputStream; import java.io.BufferedOutputStre ...
- JS Date日期
//日期属性var td = new Date(); alert( "getDate():" +td.getDate()+"\n" + "getDay ...
- zufeoj 数值排序(简单题)
数值排序 时间限制: 1 Sec 内存限制: 128 MB提交: 186 解决: 45[提交][状态][讨论版] 题目描述 输入一串数字,把这串数字中的‘0’都看成空格,那么就得到一行用空格分割的 ...
- PHP通过引用传递参数
<?php function add_some_extra(&$string) // 引入变量,使用同一个存储地址 { $string .= 'and something extra.' ...
- 第七章 JVM体系结构与工作方式
JVM能跨计算机体系结构来执行Java字节码,主要是由于JVM屏蔽了与各个计算机平台的软件和硬件之间的差异. 7.1 JVM体系结构 7.1.1 何谓JVM 模拟一个计算机来达到一个计算机所具有的计算 ...