SAE Python MemCache使用示例

Memcache是SAE为开发者提供的分布式内存缓存服务,用来以共享的方式缓存用户的小数据。

Memcache主要的使用场景有以下两个:

  • 需要共享某些 key-value 形式的小数据时。(因为SAE的Web服务是分布式环境,所以使用全局变量方式等方式是不行的)。
  • 缓存MySQL等后端存储的数据。快速进行数据响应,减轻后端存储的压力。

用户需要先在在线管理平台创建Memcache,然后才可以通过API读写Memcache。

SAE Python本地开发环境提供了对SAE memcached服务的模拟,在本地开发时可以使用该模块模拟线上memcache服务的一些行为。使用下面的方法对线上和本地开发环境加以区分。

import os

#获取MemCache客户端
def getClient():
	if 'SERVER_SOFTWARE' not in os.environ: #本地调试环境
		import memcache
		mc = memcache.Client(['127.0.0.1:11211'], debug=0)
		return mc
	else: #SAE线上服务器环境
		import pylibmc
		return pylibmc.Client()

下面的代码片段展示了一个为memcache缓存数据添加超时检测的简单解决方案:

from datetime import datetime, timedelta

#带时间戳的MemCache Set
def setWithTimestamp(key, val, cdate = datetime.now()):
	mc = getClient()
	mc.set(key, {"cdate" : cdate, "data" : val})

#带超时检查的MemCache Get
def getWithTimeoutCheck(key, timeout = timedelta(minutes = 20)):
	ctime = datetime.now()
	mc = getClient()
	val = mc.get(key)
	if val:
		cdate = val.get("cdate")
		if cdate and cdate + timeout >= ctime:
			return val.get("data")
	return None

另请参阅:http://sae.sina.com.cn/doc/python/memcache.html

本文链接:http://bookshadow.com/weblog/2014/10/22/sae-python-memcache-demo/
请尊重作者的劳动成果,转载请注明出处!书影博客保留对文章的所有权利。

如果您喜欢这篇博文,欢迎您捐赠书影博客: ,查看支付宝二维码