memcache是键值对key-value存储, 操作很简单方便, python支持对memcache操作,也很简单, 能够快速上手进行开发

安装

pip install python-memcached

入门程序:

import memcachemc = memcache.Client(['127.0.0.1:11211'], debug=0)print mc.set("xxxx", "test")print mc.get("xxxx")print help(mc)
mc.disconnect_all()

CLEINT 参数详解

class Client(threading.local):"""@group Setup: __init__, set_servers, forget_dead_hosts,disconnect_all, debuglog@group Insertion: set, add, replace, set_multi@group Retrieval: get, get_multi@group Integers: incr, decr@group Removal: delete, delete_multi_DEAD_RETRY = 30  # number of seconds before retrying a dead server._SOCKET_TIMEOUT = 3  # number of seconds before sockets timeout."""def __init__(self, servers, debug=0, pickleProtocol=0,pickler=pickle.Pickler, unpickler=pickle.Unpickler,compressor=zlib.compress, decompressor=zlib.decompress,pload=None, pid=None,server_max_key_length=None, server_max_value_length=None,dead_retry=_DEAD_RETRY, socket_timeout=_SOCKET_TIMEOUT,cache_cas=False, flush_on_reconnect=0, check_keys=True):"""Create a new Client object with the given list of servers.@param servers: C{servers} is passed to L{set_servers}. 一组set或者list的连接参数@param debug: whether to display error messages when a servercan't be contacted.  debug模式@param pickleProtocol: number to mandate protocol used by(c)Pickle.@param pickler: optional override of default Pickler to allowsubclassing.@param unpickler: optional override of default Unpickler toallow subclassing.@param pload: optional persistent_load function to call onpickle loading.  Useful for cPickle since subclassing isn'tallowed.@param pid: optional persistent_id function to call on picklestoring.  Useful for cPickle since subclassing isn't allowed.@param dead_retry: number of seconds before retrying ablacklisted server. Default to 30 s.重试连接时间间隔, 默认30s@param socket_timeout: timeout in seconds for all calls to aserver. Defaults to 3 seconds.socket连接超时时间,默认3s@param cache_cas: (default False) If true, cas operations willbe cached.  WARNING: This cache is not expired internally, ifyou have a long-running process you will need to expire itmanually via client.reset_cas(), or the cache can growunlimited.@param server_max_key_length: (default SERVER_MAX_KEY_LENGTH)Data that is larger than this will not be sent to the server.@param server_max_value_length: (defaultSERVER_MAX_VALUE_LENGTH) Data that is larger than this willnot be sent to the server.限制最大的发送字符的长度, 如果超过将不会被发送@param flush_on_reconnect: optional flag which prevents ascenario that can cause stale data to be read: If there's morethan one memcached server and the connection to one isinterrupted, keys that mapped to that server will getreassigned to another. If the first server comes back, thosekeys will map to it again. If it still has its data, get()scan read stale data that was overwritten on anotherserver. This flag is off by default for backwardscompatibility.重连刷新, 有多个memcache服务器, 一个终端后,keys将会映射到另外一个服务器上, 如果服务器回复, 那么这些keys将会被重新映射,如果这个服务器还保留有之前的key,那么key有可          能被其他服务器重写了, 该参数用于该情况@param check_keys: (default True) If True, the key is checkedto ensure it is the correct length and composed of the rightcharacters.检察key"""

方法详解

初始化的时候 set_servers, forget_dead_hosts

  1. def set_servers(self, servers):

设置服务器

这个函数最好是设置为私有函数,这里作者设置的都可以访问,进行修改

  1. forget_dead_hosts()

移除故障节点

设置键值: set, add, replace, set_multi

  1. def set(key, val, time=0, min_compress_len=0, noreply=False):

如果set的key已经存在,该命令会更新该key所对应的原来的数据

  1. def add(self, key, val, time=0, min_compress_len=0, noreply=False):

新增, 如果之前的key是存在的,那么将不会更新原来的值

  1. def replace(self, key, val, time=0, min_compress_len=0, noreply=False):

更新, 用于更新已经存在的key的value, 如果key不存在,则会返回NOT_STORED

  1. def set_multi(self, mapping, time=0, key_prefix='', min_compress_len=0, noreply=False):

    匹配设置,

    mc.set_multi({'key1' : 'val1', 'key2' : 'val2'})

    使用mc.get_multi(['key1', 'key2']) 获取

获取值: get, get_multi

  1. def get(self, key):

    获取值

  2. def get_multi(self, keys, key_prefix='')

    批量获取

数字加减: incr, decr

  1. def incr(self, key, delta=1, noreply=False):

    增加

  2. def decr(self, key, delta=1, noreply=False)

    减少

删除: delete, delete_multi

  1. def delete(self, key, time=None, noreply=False)

    删除key

  2. def delete_multi(self, keys, time=None, key_prefix='', noreply=False)

    批量删除

    mc.delete_multi(['key1', 'key2'])

  3. prepend(self, key, val, time=0, min_compress_len=0, noreply=False)

    在头部追加数据

  4. append(self, key, val, time=0, min_compress_len=0, noreply=False)

    在末尾追加更新

  5. cas(self, key, val, time=0, min_compress_len=0, noreply=False)

    cas

  6. check_key(self, key, key_extra_len=0)

    检察key

  7. disconnect_all(self)

    中断所有连接, 在程序结束的时候关闭连接

  8. flush_all(self)

    刷新所有key, 过期所有key, 清空memcache

  9. get_slab_stats(self)

    获取 slab stats

  10. get_slabs(self)

    获取slab

  11. get_stats(self, stat_args=None)

    status

  12. gets(self, key)

    获取key

  13. reset_cas(self)

    充值cas

  14. touch(self, key, time=0, noreply=False)

    Updates the expiration time of a key in memcache.

    更新key的过期时间


示例程序

# _ coding:utf-8 _*_
import memcachemc = memcache.Client(['127.0.0.1:11211'], debug=0)
mc.set_servers(['127.0.0.1:11211'])# -----  设置获取值 -------
print "****" * 8
print "set - m1 ", mc.set("m1", "test")
print "get - m1 ", mc.get("m1")
print "****" * 8
# -----  更新、操作值 -------
print "add - m2 ",mc.add("m2", "test2")
print "get - m2 ", mc.get("m1")
print " replace - m1 ", mc.replace("m1", "new1")
print "get - m1 ", mc.get("m1")
print mc.append("m1", "__end")
print mc.prepend("m1", "start__")
print "  - m ", mc.set_multi({"mt1": "1", "mt2": 2})
print "  - m ", mc.get_multi(["mt1", "mt2"])
print mc.set("count", 8)
print "  - m ", mc.incr("count", 2)
print "  - m ", mc.decr("count", "3")
print mc.set("temp", 8)
print "  - m ", mc.delete("temp")
mc.set("temp1", 8)
mc.set("temp2", 9)
print "  - m ", mc.delete_multi(["temp1", "temp2"])
print mc.get_stats()
print mc.get_slabs()
mc.forget_dead_hosts()
mc.disconnect_all()

输出:

********************************
set - m1  True
get - m1  test
********************************
add - m2  True
get - m2  testreplace - m1  True
get - m1  new1
True
True- m  []- m  {'mt2': 2, 'mt1': '1'}
True- m  10- m  7
True- m  1- m  1
[({u'lru_maintainer_juggles': u'35766', ....)]
[({'1': {'age_warm': '0', 'number_warm': '0', ....}})]

python memcache详解相关推荐

  1. python区块链开发_Fabric区块链Python开发详解

    Hyperledger Fabric是最流行的联盟区块链平台.Fabric区块链Python开发详解课程 涵盖Fabric区块链的核心概念.Fabric网络搭建.Node链码开发.Python应用开发 ...

  2. python装饰器setter_第7.27节 Python案例详解: @property装饰器定义属性访问方法getter、setter、deleter...

    上节详细介绍了利用@property装饰器定义属性的语法,本节通过具体案例来进一步说明. 一.    案例说明 本节的案例是定义Rectangle(长方形)类,为了说明问题,除构造函数外,其他方法都只 ...

  3. 【python】详解类class的继承、__init__初始化、super方法

    原文链接; https://blog.csdn.net/brucewong0516/article/details/79121179?utm_medium=distribute.pc_relevant ...

  4. python与golang_Golang与python线程详解及简单实例

    Golang与python线程详解及简单实例 在GO中,开启15个线程,每个线程把全局变量遍历增加100000次,因此预测结果是 15*100000=1500000. var sum int var ...

  5. python 最小二乘法_最小二乘法及其python实现详解

    最小二乘法Least Square Method,做为分类回归算法的基础,有着悠久的历史(由马里·勒让德于1806年提出).它通过最小化误差的平方和寻找数据的最佳函数匹配.利用最小二乘法可以简便地求得 ...

  6. 【python】详解multiprocessing多进程-Pool进程池模块(二)

    [python]详解multiprocessing多进程-process模块(一) [python]详解multiprocessing多进程-Pool进程池模块(二) [python]详解multip ...

  7. 【python】什么是序列,Python序列详解

    什么是序列,Python序列详解 概述 序列索引 序列切片 序列相加 序列相乘 检查元素是否包含在序列中 序列相关的内置函数 range 快速初始化数字列表 概述 所谓序列,指的是一块可存放多个值的连 ...

  8. python多线程详解 Python 垃圾回收机制

    文章目录 python多线程详解 一.线程介绍 什么是线程 为什么要使用多线程 总结起来,使用多线程编程具有如下几个优点: 二.线程实现 自定义线程 守护线程 主线程等待子线程结束 多线程共享全局变量 ...

  9. Python线程详解

    Python线程详解 线程简介 开启多线程 线程之间共享 GIL全局解释器锁 线程间通信 线程简介 线程,有时被称为轻量进程(Lightweight Process,LWP),是程序执行流的最小单元. ...

最新文章

  1. 分享丨国外20个机器学习相关博客推荐
  2. FPGA基础知识极简教程(6)UART通信与移位寄存器的应用
  3. Cocos2d-CCScene所有场景切换特效[转载]
  4. 树莓派python编程小车_python3实现网页版raspberry pi(树莓派)小车控制
  5. Altium Designer如何画虚线
  6. 【Java】我的第一个 JAVA 程序:Hello,world!
  7. pythonbyte转int_Python将byte数组转换为int详解
  8. python竖着输出编码_在Python中使用管道标准输出时设置正确的编码
  9. html状态码206,HTTP状态码206
  10. Python-常用模块
  11. 电脑设置u盘启动方法
  12. crystal xcelsius 的使用
  13. 程序员防猝死指南——程序员养生攻略
  14. 新版UI聚合支付系统四方系统源码+修复漏洞完美版
  15. 关于ADB需要知道的一些知识
  16. [PCIe]PCIe设备在一个系统中是如何发现与访问的
  17. Windows Server 2016搭建文件服务器
  18. [附源码]计算机毕业设计Python蛋糕购物商城(程序+源码+LW文档)
  19. 当谈论工程师文化时我们在谈些什么
  20. 趣图:谁说理工男都穿格子衫?

热门文章

  1. 操作系统学习-练习题个人总结(九)
  2. comsol5.0 matlab2011b,comsol 5.0 with MATLAB运行的问题
  3. 《巴菲特致股东的信(第4版)》笔记——消费行为
  4. 物流配货平台Hybrid APP效果图
  5. phpcms怎么用mysql_【PHPCMS系统mysql优化教程】-phpcms教程-【零度中国】
  6. physx-3.4.1官方文档
  7. 谷歌浏览器修复_谷歌发布 Chrome 紧急补丁 修复可执行任意代码的高危漏洞
  8. Ext4.1.0 Doc中文版 V1.0.0 Beta
  9. html5 css3画八卦图,用纯CSS3绘制乾坤八卦图
  10. 制作Windows To Go Mac,windows电脑通用