我相信我有一個相當典型的用例,這是非常困難的,最終的一致性。我想知道是否有人已經創建了一個python框架來幫助解決這個問題。框架,以幫助App Engine的最終一致性+緩存
我有一個GET請求發出一組實體的查詢。他們很少更新。 我有POST請求一次更新一個實體,更新實體會影響它們是否出現在GET請求中。
由於實體很少發生變化,我想長時間memcache GET請求,比如說幾天或幾周。所以在難得的機會我得到一個POST來更新一個實體,我可以清除memcache。
如果我處理POST請求,更新實體,清除緩存並在不久之後進入GET請求,最終一致的數據存儲查詢可能會顯示舊的查詢結果,然後將被memcached用於接下來的幾天或幾周。
而不是簡單地更新數據存儲,清除緩存,我需要:
1. update the datastore
2. get the cached query
3. modify the cached query (with the proper sorting too!)
4. update the cache with the new modified query results (with a cas() operation)
這似乎是一個常見的問題不夠。有沒有可以幫助緩解這個問題的Python框架?
ndb沒有幫助,因爲數據存儲區查詢繞過了所有緩存。
如果重要,我目前使用的是django-nonrel,而django-tastypie則處理GET請求。
緩存查詢是任意困難 - 因爲沒有辦法一一列舉或查詢memcache,在一般情況下無法知道可能會緩存哪些查詢。我不認爲有辦法自動執行此操作:如果您想緩存查詢,則必須根據具體情況進行查詢。 –