python - 为什么在这个 NDB put 操作的末尾有一个 memcache delete?

标签 python google-app-engine memcached app-engine-ndb

我只是在 Google App Engine 上试验 Appstats 和 NDB。

我理解 put 之后的立即获取将来自本地内存缓存,但为什么会有内存缓存删除操作?

这是全部代码:

import webapp2
from google.appengine.ext import ndb

class Specs(ndb.Model):
    make = ndb.StringProperty()
    model = ndb.StringProperty()
    doors = ndb.IntegerProperty()
    wheels = ndb.IntegerProperty()

class Car(ndb.Model):
    _use_memcache = True
    _use_cache = True
    specs = ndb.LocalStructuredProperty(Specs)

class MainHandler(webapp2.RequestHandler):
    def get(self):
        my_car = Car(id='some-car')
        specs = Specs(
          make = "Volvo",
          model = "240",
          doors = 5,
          wheels = 4
        )
        my_car.specs = specs
        result = my_car.put()

        my_car_by_get = result.get()

        self.response.write('Saved car')

app = webapp2.WSGIApplication([
    ('/', MainHandler),

], debug=True)

以及 Appstats 时间线:

Appstats timeline of an NDB put operation

最佳答案

memcache.Delete() 在您使用 NDB 时在每个 put() 上被调用,因为自动缓存,这是设计使然。您可以阅读有关 NDB caching 的更多信息如果您想在缓存方面有更好的控制或不同的行为。

关于python - 为什么在这个 NDB put 操作的末尾有一个 memcache delete?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22440042/

相关文章:

python - 在 Django 中的 HTML 模板上呈现/引发验证错误

java - 如何在 Google App Engine 上使用 Objectify 创建多对多关系?

php - 缓存查询困惑,laravel

python - 对于多平台 GPGPU 计算,是否有 OpenCL+PyOpenCL 的替代方案?

python - 使用 NumPy 的 Mittag-Leffler 函数不稳定

python - 使用hough_line后关于hough_line_peaks的说明

java - 应用程序引擎 req.getParameter 类型为 float

google-app-engine - 如何检查 GAE 中的搜索 API 配额使用情况?

c# - 使用 memcached 缓存和检索数据列表

c# - 使用静态 MemcachedClient 的问题