51学通信论坛2017新版

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 5057|回复: 2
打印 上一主题 下一主题

[Python语言及其应用] 8.5.2 memcached

[复制链接]

 成长值: 15613

  • TA的每日心情
    开心
    2022-7-17 17:50
  • 2444

    主题

    2544

    帖子

    7万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    74104
    跳转到指定楼层
    楼主
    发表于 2018-1-2 21:35:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
        memcached(http://memcached.org/)是一种快速的、内存键值对象的缓存服务器。它一般置于数据库之前, 用于存储网页服务器会话数据。 Linux 和 OS X 点此链接(https://code.google.com/p/memcached/wiki/NewInstallFromPackage) 下 载, 而 Windows 系 统 在 此(http://zurmo.org/wiki/installing-memcache-on-windows) 下载。如果你想要尝试使用,需要
    一个 memcached 服务器和 Python 的驱动程序。
         当然存在很多这样的驱动程序, 其中能在 Python 3 使用的是 python3-memcached(https://github.com/eguven/python3-memcached),可以通过下面这条命令安装:
    $ pip install python-memcached
         连接到一个 memcached 服务器之后,可以做以下事项:  

    • 赋值和取值
    • 其中一个值的自增或者自减
    • 删除其中一个键
        数据在 memcached 并不是持久化保存的,后面的可能会覆盖早些写入的数据,这本来就是它的固有特性, 因为它作为一个缓存服务器,通过舍弃旧数据避免程序运行时内存不足的问题。
        你也可以同时连接到多个 memcached 服务器。不过下面的例子只连到一个:代码:
    1. import memcache
    2. mc = memcache.Client(['10.1.1.100:11211'],debug=1) #10.1.1.100是51学通信Openstack的控制节点,已安装好memcached server端
    3. mc.set("foo","bar")
    4. value = mc.get("foo")
    5. print(value)
    6. mc.set("foo","beer")
    7. value = mc.get("foo")
    8. print(value)
    复制代码
    输出:
    1. bar
    2. beer
    复制代码
    可以看到,memcached的值不是持久化保存,通过键值对来存储,有新数据就会覆盖旧数据。并且是字典的结构。

    回复

    使用道具 举报

     成长值: 15613

  • TA的每日心情
    开心
    2022-7-17 17:50
  • 2444

    主题

    2544

    帖子

    7万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    74104
    沙发
     楼主| 发表于 2018-1-2 22:10:42 | 只看该作者
    Redis的作者Salvatore Sanfilippo曾经对这两种基于内存的数据存储系统进行过比较:
    1)Redis支持服务器端的数据操作:Redis相比Memcached来说,拥有更多的数据结构和并支持更丰富的数据操作,通常在Memcached里,你需要将数据拿到客户端来进行类似的修改再set回去。这大大增加了网络IO的次数和数据体积。在Redis中,这些复杂的操作通常和一般的GET/SET一样高效。所以,如果需要缓存能够支持更复杂的结构和操作,那么Redis会是不错的选择。
    2)内存使用效率对比:使用简单的key-value存储的话,Memcached的内存利用率更高,而如果Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcached。
    3)性能对比:由于Redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis,虽然Redis最近也在存储大数据的性能上进行优化,但是比起Memcached,还是稍有逊色。
    回复 支持 反对

    使用道具 举报

     成长值: 15613

  • TA的每日心情
    开心
    2022-7-17 17:50
  • 2444

    主题

    2544

    帖子

    7万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    74104
    板凳
     楼主| 发表于 2018-1-2 22:21:45 | 只看该作者
    其他的noSQL数据库:
    Site             Python API
    Cassandra(http://cassandra.apache.org/) pycassa(https://github.com/pycassa/pycassa
    CouchDB(http://couchdb.apache.org/) couchdb-python(https://github.com/djc/couchdb-python
    HBase(http://hbase.apache.org/) happybase(https://github.com/wbolster/happybase
    Kyoto Cabinet(http://fallabs.com/kyotocabinet/) kyotocabinet(http://fallabs.com/kyotocabinet/pythondoc/
    MongoDB(http://www.mongodb.org/) mongodb(http://api.mongodb.org/python/current/
    Riak(http://basho.com/riak/) riak-python-client(https://github.com/basho/riak-pythonclient
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|51学通信技术论坛

    GMT+8, 2025-1-31 09:58 , Processed in 0.165308 second(s), 30 queries .

    Powered by Discuz! X3

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表