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:

用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。

python-memcached模块的更多相关文章

  1. python 常用模块(转载)

    转载地址:http://codeweblog.com/python-%e5%b8%b8%e7%94%a8%e6%a8%a1%e5%9d%97/ adodb:我们领导推荐的数据库连接组件bsddb3:B ...

  2. day02 Python 的模块,运算,数据类型以及方法

    初识pyhton的模块: 什么是模块: 我的理解就是实现一个功能的函数,把它封装起来,在你需要使用的时候直接调用即可,我的印象里类似于shell 的单独函数脚本. python 的模块分为标准的和第三 ...

  3. Python标准模块--threading

    1 模块简介 threading模块在Python1.5.2中首次引入,是低级thread模块的一个增强版.threading模块让线程使用起来更加容易,允许程序同一时间运行多个操作. 不过请注意,P ...

  4. Python的模块引用和查找路径

    模块间相互独立相互引用是任何一种编程语言的基础能力.对于“模块”这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义.对于编译型的语言,比如C#中 ...

  5. Python Logging模块的简单使用

    前言 日志是非常重要的,最近有接触到这个,所以系统的看一下Python这个模块的用法.本文即为Logging模块的用法简介,主要参考文章为Python官方文档,链接见参考列表. 另外,Python的H ...

  6. Python标准模块--logging

    1 logging模块简介 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级.日志保存路径.日志文件回滚等:相比print,具备如下优点: 可以通过设置不同 ...

  7. python基础-模块

    一.模块介绍                                                                                              ...

  8. python 安装模块

    python安装模块的方法很多,在此仅介绍一种,不需要安装其他附带的pip等,python安装完之后,配置环境变量,我由于中英文分号原因,环境变量始终没能配置成功汗. 1:下载模块的压缩文件解压到任意 ...

  9. python Queue模块

    先看一个很简单的例子 #coding:utf8 import Queue #queue是队列的意思 q=Queue.Queue(maxsize=10) #创建一个queue对象 for i in ra ...

  10. python logging模块可能会令人困惑的地方

    python logging模块主要是python提供的通用日志系统,使用的方法其实挺简单的,这块就不多介绍.下面主要会讲到在使用python logging模块的时候,涉及到多个python文件的调 ...

随机推荐

  1. spring的笔记1 关云长

    1.1   实例化方式 l  3种bean实例化方式:默认构造.静态工厂.实例工厂 1.1.1  默认构造 <bean id="" class=""> ...

  2. django国际化总结

    转:http://blog.csdn.net/ybdesire/article/details/46806739

  3. Delphi从Internet下载文件

    Delphi从Internet下载文件   今天在做拍卖系统的时候,因考虑到网络状况问题,需要将拍品所有信息下载到本机,包括拍品图片,因此需要实现从Internet下载文件的功能.      下面是代 ...

  4. 配置动态ip为静态ip qq交流总结

    修改 /etc/sysconfig/network-scripts/ifcfg-etho 修改dhcp 为 static 修改后的样例 这三个ip该怎么对应 ifconfig 123各自对应 修改/e ...

  5. find 使用指南

    find 使用方法整理 -name  按照文件名查找文件. -perm  按照文件权限来查找文件. -user  按照文件属主来查找文件. -group  按照文件所属的组来查找文件. - n表示文件 ...

  6. 使用阿里云服务器(OOS)实现图片上传

    一: 页面 <%@ page language="java" contentType="text/html; charset=utf-8" pageEnc ...

  7. 洛谷 P3302 [SDOI2013]森林 Lebal:主席树 + 启发式合并 + LCA

    题目描述 小Z有一片森林,含有N个节点,每个节点上都有一个非负整数作为权值.初始的时候,森林中有M条边. 小Z希望执行T个操作,操作有两类: Q x y k查询点x到点y路径上所有的权值中,第k小的权 ...

  8. 杂项-Java:JCP

    ylbtech-杂项-Java:JCP JCP(Java Community Process) 是一个开放的国际组织,主要由Java开发者以及被授权者组成,职能是发展和更新. 1. 中文名:jcp 外 ...

  9. 给安卓端调用的短信发送接口demo

    package com.js.ai.modules.pointwall.action; import java.io.IOException; import java.util.HashMap; im ...

  10. 搭建了一个在线的机器学习webshell检测RESTful API

    # 地址: http://118.190.147.89:5001/ 如果不能访问,联系sevck#jdsec.com # 说明: 简单的基于机器学习检测webshell:目前只支持php的检测 #使用 ...