回答
你可以使用一個簡單的字典作爲緩存。雖然你必須自己處理到期。這裏是一個關於如何使用MemoryCache
的例子。當您運行此腳本時,頁面http://127.0.0.1:8080/test_cache
每10秒顯示不同的內容。每個類似的請求存儲對象,這意味着不同的URI參數對應於不同的「bin」。您可以通過在http://127.0.0.1:8080/test_cache?foo=0
和http://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())
我有另一個問題。如何使用ID從緩存中獲取數據? –
數據是否存儲在RAM中? –
緩存實際上發生在一個簡單的字典中,所以是的:緩存在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
- 1. 將數據保存到內部存儲
- 2. 內存內存緩存數據集
- 3. 使用ADM-ZIP(Node.js)將SQLite存儲到內存數據庫中
- 4. 用PHP存儲緩存數據
- 5. 是在內存緩存實體鍵的相同數據存儲
- 6. 內存緩存或持久數據存儲[GAEJ]
- 7. 如何將緩存存儲持久化到關係數據庫
- 8. 限制內存緩存存儲
- 9. 內存緩存使用PHP
- 10. 緩存和內存使用
- 11. 將數據存儲到存儲器中的獨立存儲器
- 12. 將數據存儲在內存中:會話vs緩存vs靜態
- 13. 使用AJAX將數據存儲到MySQL
- 14. 使用json將數據存儲到sharedpreferences
- 15. HashIds - 將數據存儲到數據庫或不存儲到
- 16. 將數據保存到存儲器
- 17. 將數據保存到本地存儲
- 18. 將數據保存到本地存儲
- 19. 緩存或存儲在數據庫中?
- 20. LINQ to SQL存儲庫 - 緩存數據
- 21. HTML5離線緩存數據庫存儲
- 22. Django的緩存cache.set不存儲數據
- 23. 在本地存儲緩存數據
- 24. Spring數據存儲庫緩存結果
- 25. CherryPy緩存如何工作?
- 26. 如何使用PHP將數據存儲在RAM內存中?
- 27. 何時將數據保存到內部緩存目錄?
- 28. 將數據存儲到mysql
- 29. 將數據存儲到NSUserDefaults
- 30. 如何將數據表存儲在緩存中以重用它?
也許這會有所幫助。不完全是一個樣本,但應指向正確的方向。 https://cherrypy.readthedocs.org/en/latest/pkg/cherrypy.lib.html?highlight=cherrypy.lib.caching#module-cherrypy.lib.caching – electrometro
@electrometro您是否有示例代碼如何從此開始?我只想要一個可以實現get,put和clear方法的簡單程序。其實我不知道該如何開始。我已經通過上述鏈接,但機器人能夠開始。 –
對不起,我之前從未使用過cherrypy,所以我不熟悉他們框架的設置。但是,如果你使用Django,我可以很容易地向你展示。我相信有人會來,可以幫助。 – electrometro