• python-memcached模块


    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。















  • 相关阅读:
    sql相关操作
    web前端技术归类
    在EasyUI中统一判断是否有选中行,如果有则将选中行数据传入回调函数
    几种不同的分页处理办法
    将json格式日期(毫秒数)转成日常日期格式和日常格式时间对比
    在asp.net中导出表格Excel数据
    生成html文件
    EasyUI时间格式化
    checkbox,radio,selected相关操作
    javascript生成n至m的随机整数
  • 原文地址:https://www.cnblogs.com/daliangtou/p/5138673.html
Copyright © 2020-2023  润新知