我有一个 Web 应用程序,它每天午夜运行一个 cron 作业,然后使用该数据在接下来的 24 小时内填充 HTML 模板。我不在乎保留历史价值,只展示最新的。
考虑到这一点,您是否发现我只是在 cron 作业完成后缓存值,然后全天从 memcached 中获取值以获取 GET 请求,而不是查询数据库(GAE datasotre)?
我正在使用 python 和 GAE。
谢谢你。
我有一个 Web 应用程序,它每天午夜运行一个 cron 作业,然后使用该数据在接下来的 24 小时内填充 HTML 模板。我不在乎保留历史价值,只展示最新的。
考虑到这一点,您是否发现我只是在 cron 作业完成后缓存值,然后全天从 memcached 中获取值以获取 GET 请求,而不是查询数据库(GAE datasotre)?
我正在使用 python 和 GAE。
谢谢你。
Memcached 数据不是持久的。你的应用不能依赖它。从那里获取速度很好,但是可以随时驱逐缓存,因此您必须有一个永久存储作为数据不存在时的备份。
memcache 文档解释了这一点:
但是,当考虑是否将值仅存储在内存缓存中而不由其他持久存储支持时,请确保当值突然不可用时,您的应用程序的行为可以接受。值可以随时从内存缓存中过期,并且可能在为该值设置的过期期限之前过期。例如,如果用户的会话数据突然缺失会导致会话出现故障,那么除了内存缓存之外,该数据可能还应该存储在数据存储中。
好吧,如果您使用缓存背后有一个原因,那么我认为这是因为访问数据库会消耗资源,并且响应时间实际上会随着请求的增加而下降。缓存是一个临时存储,但是有缓存软件可以让您使用多个缓存拓扑,例如“复制缓存”,其中一个对象有一个对象的两个副本,因此不需要进行数据库旅行,我得到了这个想法从上面关于 memcached 的引用中可以看出,这不是一个可用的选项。尝试使用 NCache。或者您可以阅读更多相关信息:http ://www.alachisoft.com/ncache/