热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python3操作Memcached

安装MemcachedMemcached整理安装PythonMemcachedAPIpython操作啊Memcached使用Python-memcached模块下载安装:https
安装Memcached

Memcached整理

安装Python Memcached API

python操作啊Memcached使用Python-memcached模块
下载安装: https://pypi.python.org/pypi/python-memcached

Python Memcached API 常用操作

import memcache
mc = memcache.Client(['117.48.193.124'], debug = True)
# debug = True 表示运行时出现错误时显现错误信息
# memcache模块原生支持集群操作,其原理是内存维护一个主机列表,且集群主机的权重值和主机在列表中重复出现的次数成正比
# 如: host_list = ['1.1.1.1','2.2.2.2','2.2.2.2','3.3.3.3',]
# 或者 host_list = [('1.1.1.1',1), ('2.2.2.2',2), ('3.3.3.3',1),]
# 如果用户要在内存中创建一个键值对,那么要执行以下步骤:
# 1.根据算法将k1转换成一个数字
# 2.将数字和主机长度求余,得到一个值N(0<=N<列表长度)
# 3.在主机列表中更具第2步得到的值为索引获得主机,例如在host_list中
# 4.连接 将第3步中获取主机,将要设置的键值对放在该服务器的内存中
mc.set('foo', 'bar')
ret = mc.get('foo')
print(ret)
mc.add('k1', 'v1') # 如果已经存在,则添加失败
mc.replace('k1','r1') # 如果key不存在,则报错
print(mc.get('k1'))
mc.set('key0', 'fbo') # set 设置一个值,如果存在则修改
mc.set_multi({'key0': 'fbo1', 'key1': 'fbo2'})
mc.delete('k1')
mc.delete_multi(['key0','key1'])
var = mc.get('key0')
item_dict = mc.get_multi(['key0','key1'])
print(var,'\n',item_dict)
mc.set('k1', 'v1')
mc.append('k1','after')
print(mc.get('k1'))
mc.prepend('k1', 'before')
print(mc.get('k1'))
mc.set('k1', 777)
mc.incr('k1')
print(mc.get('k1'))
mc.incr('k1')
print(mc.get('k1'))
mc.decr('k1')
mc.decr('k1')
print(mc.get('k1'))
# 如商城商品剩余个数,假设改值保存在memcache中,product_count = 900
# A用户刷新页面从memcache中读取到product_count = 900
# B用户刷新页面从memcache中读取到product_count = 900
#
# 如果A、B用户均购买商品
#
# A用户修改商品剩余个数 product_count=899
# B用户修改商品剩余个数 product_count=899
#
# 如此一来缓存内的数据便不在正确,两个用户购买商品后,商品剩余还是 899
# 如果使用python的set和get来操作以上过程,那么程序就会如上述所示情况!
#
# 如果想要避免此情况的发生,只要使用 gets 和 cas 即可,如:
mc = memcache.Client(['117.48.193.124'], debug = True, cache_cas = True)
mc.set('product_count',900)
v = mc.gets('product_count')
# ...
# 如果有人在gets之后和cas之前修改了product_count,那么,下面的设置将会失效,抛出异常,从而避免非正常数据的产生
mc.cas('product_count','899')
print(mc.get('product_count'))
# 原理,每次执行gets时,会从memcache中获取一个自增的数字,通过cas去修改时,会携带获取的自增值和memcache中的自增
# 值进行比较

推荐阅读
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 本文探讨了如何优化和正确配置Kafka Streams应用程序以确保准确的状态存储查询。通过调整配置参数和代码逻辑,可以有效解决数据不一致的问题。 ... [详细]
  • 本文详细介绍了Java中的访问器(getter)和修改器(setter),探讨了它们在保护数据完整性、增强代码可维护性方面的重要作用。通过具体示例,展示了如何正确使用这些方法来控制类属性的访问和更新。 ... [详细]
  • 本文提供了一套实用的方法论,旨在帮助开发者构建能够应对高并发请求且易于扩展的Web服务。内容涵盖了服务器架构、数据库管理、缓存策略以及异步处理等多个方面。 ... [详细]
  • 题目描述:给定n个半开区间[a, b),要求使用两个互不重叠的记录器,求最多可以记录多少个区间。解决方案采用贪心算法,通过排序和遍历实现最优解。 ... [详细]
  • 如何在窗口右下角添加调整大小的手柄
    本文探讨了如何在传统MFC/Win32 API编程中实现类似C# WinForms中的SizeGrip功能,即在窗口的右下角显示一个用于调整窗口大小的手柄。我们将介绍具体的实现方法和相关API。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本文介绍了如何在C#中启动一个应用程序,并通过枚举窗口来获取其主窗口句柄。当使用Process类启动程序时,我们通常只能获得进程的句柄,而主窗口句柄可能为0。因此,我们需要使用API函数和回调机制来准确获取主窗口句柄。 ... [详细]
author-avatar
雅婷永幸482
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有