下面是我困惑的视频:https://www.youtube.com/watch?v=9UHKsiDznwg
在6:12左右,您可以看到他用于缓存数据库查询的代码。我不明白的是,为什么他使用字典来缓存查询。按照他设置的方式,词典不会只在他设置的“顶级”键上存储一个值。他为什么不把它储存在一个变量里呢?我还包括了相关的主要代码。
CACHE = {}
def top_arts():
key = 'top'
if key in CACHE:
arts = CACHE[key]
else:
logging.error("DB QUERY")
arts = db.GqlQuery("SELECT * "
"FROM Art"
"WHERE ANCESTOR IS :1"
"ORDER BY created DESC"
"LIMIT 10",
art_key)
arts = list(arts)
CACHE[key] = arts
return arts发布于 2017-08-20 03:10:32
该示例只有一个值,为true,但它只是一个示例,一个应用程序中通常有多个可缓存的值。该模式支持任意数量的缓存值。
这只是一个习惯问题--将整个缓存保持在一起,可以很容易地对其进行操作--比如查看缓存中的内容,等等。如果代码中散落着一堆自变量,就很难做到这一点。
当然,这是一个主观的问题。例如,有些人可能会反对它,因为它很危险:如果在不同的地方不小心使用相同的键,缓存值就会损坏--很可能不是一个微不足道的bug。
https://stackoverflow.com/questions/45777074
复制相似问题