首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >“优化查询”视频(Udacity dev课程),缓存db查询

“优化查询”视频(Udacity dev课程),缓存db查询
EN

Stack Overflow用户
提问于 2017-08-19 23:14:17
回答 1查看 34关注 0票数 1

下面是我困惑的视频:https://www.youtube.com/watch?v=9UHKsiDznwg

在6:12左右,您可以看到他用于缓存数据库查询的代码。我不明白的是,为什么他使用字典来缓存查询。按照他设置的方式,词典不会只在他设置的“顶级”键上存储一个值。他为什么不把它储存在一个变量里呢?我还包括了相关的主要代码。

代码语言:javascript
运行
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-20 03:10:32

该示例只有一个值,为true,但它只是一个示例,一个应用程序中通常有多个可缓存的值。该模式支持任意数量的缓存值。

这只是一个习惯问题--将整个缓存保持在一起,可以很容易地对其进行操作--比如查看缓存中的内容,等等。如果代码中散落着一堆自变量,就很难做到这一点。

当然,这是一个主观的问题。例如,有些人可能会反对它,因为它很危险:如果在不同的地方不小心使用相同的键,缓存值就会损坏--很可能不是一个微不足道的bug。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45777074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档