Python 使用memcache限制对数据库的写入量

Python 使用memcache限制对数据库的写入量,python,google-app-engine,caching,memcached,google-cloud-datastore,Python,Google App Engine,Caching,Memcached,Google Cloud Datastore,我试图修改留言簿示例webapp以减少数据库写入量 我试图实现的是将所有留言簿条目加载到memcache中,这是我所做的 但是,我希望能够使用新的留言簿条目直接更新memcache,然后每30秒将所有更改作为批处理写入数据库。() 有人举过我如何实现上述目标的例子吗?这对我真的很有帮助 谢谢:)这是丢失数据的秘诀。我很难相信一本客座书会导致足够多的写作活动成为一个问题。此外,由于memcache是不可搜索的,因此这一过程中涉及的簿记工作也很棘手。您试图实现的目标被称为,通常并不像一开始看起来的那

我试图修改留言簿示例webapp以减少数据库写入量

我试图实现的是将所有留言簿条目加载到memcache中,这是我所做的

但是,我希望能够使用新的留言簿条目直接更新memcache,然后每30秒将所有更改作为批处理写入数据库。()

有人举过我如何实现上述目标的例子吗?这对我真的很有帮助


谢谢:)

这是丢失数据的秘诀。我很难相信一本客座书会导致足够多的写作活动成为一个问题。此外,由于memcache是不可搜索的,因此这一过程中涉及的簿记工作也很棘手。

您试图实现的目标被称为,通常并不像一开始看起来的那样容易实现。正如我所知,目前还没有针对Memcached/GAE的Python现成解决方案,但您可以看看。它具有的一些基本功能(请参见appengine.py和memcache.py),因此它可以作为您自己解决方案的基础

Memcache是一种易失性存储器,用于存储有价值的数据,如留言簿条目;请记住,例如,在内存不足的情况下,memcache数据可能会被逐出

如果您的留言簿流量很大,并且您正在经历写入数据存储超时/争用,请尝试使用另一种方法,使用限制的速率来降低写入数据存储的次数

  • 让用户编译留言簿条目
  • 通过库将每个数据项传递给速率受限的taskqueue
  • 写入数据存储
  • 您可以通过以下方式放松对数据存储的写入,即在
    队列.yaml中定义低速执行:

    queue:
    - name: relaxed-write
      rate: 1/s
      bucket_size: 1
    

    每秒写入一次,可能会出现一些零星的超时错误;在这种情况下,任务将再次执行,直到成功。

    您是最近第二个询问类似问题的人。我认为有一些不好的优化经验。您应该避免单独执行put,并尽可能尝试批处理put,但如果不先将数据写入数据存储,就不应该将希望再次看到的数据放入memcache。