这与Google App Engine Memcache API特别相关,但我确定它也适用于其他Memcache工具。如果我想在内存缓存中存储一个None值,该怎么办?
字典获得()方法允许你指定一个默认值,比如dict.get(“键”,“defaultval”)
,如果有可能这是有用的,你可能希望存储无作为字典中的一个值。
但是,memcache.get()不允许您这样做。我修改我的@memoize装饰,所以它看起来是这样的:
def memoize(keyformat, time=1000000):
"""Decorator to memoize functions using memcache."""
def decorator(fxn):
def wrapper(*args, **kwargs):
key = keyformat + str(args[1:]) + str(kwargs)
from google.appengine.api import memcache
data = memcache.get(key)
if Debug(): return fxn(*args, **kwargs)
if data:
if data is 'None': data = None
return data
data = fxn(*args, **kwargs)
if data is None: data = 'None'
memcache.set(key, data, time)
return data
return wrapper
return decorator
现在,我敢肯定有,我不应该在第一时间被存储无值的很好的理由,但让我们把那个预留现在。除了将None vals转换为字符串并返回之外,还有更好的方法可以处理这个问题吗?
我认为这是最好的方法。它给你一个哨兵值,不能混淆其他任何东西。 – 2009-05-22 10:52:01
这就是我最终做的。谢谢! – jamtoday 2009-05-29 01:15:14