zoukankan      html  css  js  c++  java
  • 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。















  • 相关阅读:
    86. Partition List
    328. Odd Even Linked List
    19. Remove Nth Node From End of List(移除倒数第N的结点, 快慢指针)
    24. Swap Nodes in Pairs
    2. Add Two Numbers(2个链表相加)
    92. Reverse Linked List II(链表部分反转)
    109. Convert Sorted List to Binary Search Tree
    138. Copy List with Random Pointer
    为Unity的新版ugui的Prefab生成预览图
    ArcEngine生成矩形缓冲区
  • 原文地址:https://www.cnblogs.com/daliangtou/p/5138673.html
Copyright © 2011-2022 走看看