2012-01-24 17 views
3

我期待在寫一個超一流的我所有的谷歌App Engine數據存儲類,看起來是這樣的:App Engine:是否有一個很好的通用工具來緩存數據存儲對象?

class MemcacheMixin(object): 
    @classmethod 
    def cache_get_by_id(cls, id, parent=None): 
     if memcache.has_key(...): 
      ... 
    ... 

class MyEntity(db.Model, MemcacheMixin): 
    ... 

obj = MyEntity.cache_get_by_id(...) 

的想法是,我幾乎總是想緩存數據存儲對象,我不想重複自己。我假設有人必須已經解決了這個需求,並編寫了一個通用工具來緩存這些與數據存儲類工作方式很好地集成的東西。

但是,我還沒有找到它。任何建議?

回答

9

NDB(新的數據存儲庫由Guido開發,幷包含在App Engine 1.6.1 SDK中)具有內置緩存設備(內存緩存和內存)。

查看documentation瞭解更多詳情。

+0

現在,如果它支持全文索引。 –

+0

@Ken查看Search API:https://developers.google.com/appengine/docs/python/search/overview – proppy

2

你可能要找的是一個memoization裝飾器。這裏有一個很好的,簡單的例子:

http://code.google.com/p/appengine-afterburner/source/browse/trunk/python/src/afterburner/experimental/memoize.py

而且相關的緩存協議緩衝區,而不是模型實例的建議,對性能:

http://blog.notdot.net/2009/9/Efficient-model-memcaching

+0

記憶看起來很不錯,但它缺少的一件事是更新。當一個實體被更新時,除非你手動完成,否則不會使緩存失效。 –

+2

@Ken「計算機科學中只有兩件難事:緩存失效和命名事件」 –

+1

[@Nick @Ken]「計算機科學中只有兩件難事:緩存失效,命名事物和逐個命名錯誤「。 – wTyeRogers

相關問題