我正在尝试修改留言簿示例webapp以减少数据库写入量。
我想要实现的是将所有留言簿条目加载到我已经完成的memcache中。
但是我希望能够使用新的留言簿条目直接更新内存缓存,然后每隔30秒将所有更改写入批量放置。()。
有没有人有一个如何实现上述目标的例子?它会真的帮助我!
谢谢:)
答案 0 :(得分:6)
这是丢失数据的方法。我很难相信留言簿会导致写入活动成为问题。此外,由于memcache无法搜索,因此涉及此项的簿记会很棘手。
答案 1 :(得分:2)
你想要实现的目标是Write-Behind Caching,通常情况下,实现正确的方式并不容易。据我所知,目前在Python for Memcached / GAE中没有现成的解决方案,但你可以查看Stockpyle。它具有Write-Through Caching的一些基本功能(请参阅appengine.py和memcache.py),因此它可以作为您自己的解决方案的基础。
答案 2 :(得分:1)
Memcache是一个易变的存储器,用于存储有价值的数据,如留言簿条目;请记住,例如,在内存不足的情况下,可以驱逐内存缓存数据。
如果您的留言簿流量很大而您正在编写数据存储区超时/争用,请尝试使用速率限制taskqueue的其他方法来减慢对数据存储区的写入次数。
您可以使用以下内容放宽对queue.yaml
中定义低费率执行的数据存储区的写入:
queue:
- name: relaxed-write
rate: 1/s
bucket_size: 1
每秒写一次,你可能会得到一些零星的超时错误;在这种情况下,任务将再次执行,直到成功为止。