2015-12-29 63 views
3

我是python和cherrypy中的新成員。我想使用cherrypy將數據存儲到緩存內存中。使用cherrypy將數據存儲到緩存內存

有沒有簡單的基本put,get和delete的例子?

+0

也許這會有所幫助。不完全是一個樣本,但應指向正確的方向。 https://cherrypy.readthedocs.org/en/latest/pkg/cherrypy.lib.html?highlight=cherrypy.lib.caching#module-cherrypy.lib.caching – electrometro

+0

@electrometro您是否有示例代碼如何從此開始?我只想要一個可以實現get,put和clear方法的簡單程序。其實我不知道該如何開始。我已經通過上述鏈接,但機器人能夠開始。 –

+0

對不起,我之前從未使用過cherrypy,所以我不熟悉他們框架的設置。但是,如果你使用Django,我可以很容易地向你展示。我相信有人會來,可以幫助。 – electrometro

回答

2

你可以使用一個簡單的字典作爲緩存。雖然你必須自己處理到期。這裏是一個關於如何使用MemoryCache的例子。當您運行此腳本時,頁面http://127.0.0.1:8080/test_cache每10秒顯示不同的內容。每個類似的請求存儲對象,這意味着不同的URI參數對應於不同的「bin」。您可以通過在http://127.0.0.1:8080/test_cache?foo=0http://127.0.0.1:8080/test_cache?bar=42之間切換來嘗試。

import cherrypy 
import datetime 
import sys 
from cherrypy.lib.caching import MemoryCache 

cache = MemoryCache() 
cache.delay = 10 # content auto-expires after 10 seconds 

class Root(object): 

    @cherrypy.expose 
    def test_cache(self, *args, **kwargs): 
     data = cache.get() 
     if not data: 
      obj = datetime.datetime.today() 
      size = sys.getsizeof(obj) 
      cache.put(obj, size) 
      data = obj 
     return 'obj: %s, id: %s' % (data, id(data)) 

cherrypy.quickstart(Root()) 
+0

我有另一個問題。如何使用ID從緩存中獲取數據? –

+0

數據是否存儲在RAM中? –

+0

緩存實際上發生在一個簡單的字典中,所以是的:緩存在RAM中。如果您重新啓動cherrypy,則清除緩存。我不完全確定'按ID獲取數據'的含義。這個字典的關鍵字生成爲'uri = cherrypy.url(qs = request.query_string)'。如果你需要繞過MemoryCache的邏輯,你可以直接以'cache.store'的形式訪問這個字典。爲了進一步調查,我建議您閱讀以下網站的源代碼:https://bitbucket.org/cherrypy/cherrypy/src/b24b9f2f7ab10f0c8f6dba4eee1fc078b4ddcf8f/cherrypy/lib/caching.py?at=default&fileviewer=file-view-default – atomocopter