2010-03-26 80 views
8

是否有人一起加入SQLAlchemy和Memcached,以便在緩存在Memcached中的SQLAlchemy返回結果?目前我不知道如何自己實現,我完全失去了並尋求幫助。如何使SQLAlchemy使用Memcached?

謝謝,Boda Cydo。

回答

-4

Memcache和關係數據庫是兩個單獨的東西,根本不能以相同的方式工作。 Memcache是​​一個簡單的查找桶,對於傾倒像部分網頁那樣的Blob非常有用,它可以在許多請求之間共享,並且需要很長時間才能生成(因爲無法合理地優化/取消數據庫模式的合理優化/生產)。

將memcache用作完整的後端數據存儲並不是一個好主意,但是提供轉到memcache或數據庫的SQL接口是沒有用的:你會得到兩個世界中最糟糕的,沒有無論是memcache的簡單/速度還是關係數據庫的ACID合規性。

您的數據庫服務器已經有一個緩存。如果您希望緩存更多,則可以將緩存的大小盡可能地提高,而不必使用愚蠢的硬件。使用memcache使前端更快 - 但只有當你真的無法從數據庫中獲得所需的性能時,才需要你在數據一致性方面做出妥協。除非真的需要,否則不要訴諸memcache。

+4

不能不同意更多。通過網絡加載行,轉換爲內部結構,渲染頁面。所有昂貴的流程都無法通過更快的數據庫進行改進。大多數使用任何類型的遠程系統加載數據的非平凡Web應用程序都應默認使用Memcached之類的緩存。這不僅僅是緩存結果集,這只是緩存的一個方面。 – zzzeek 2010-05-21 23:40:22

+3

甚至結果集緩存是非常相關的。您可能會有一些查詢速度很慢(比如,整個大表中的某些值的標準偏差彙總),並且每天只需要幾次。您可以嘗試將數據庫擴展到海量硬件上,只要這一個查詢,或者您可以免費將其放入緩存中。 – zzzeek 2010-05-21 23:43:41

+1

@zzzeek你是真的。以「這不是一個好主意......」的語句會更好地寫成:「在我有限的 - 因此是有限的 - 經驗中,這不是一個好主意......」 – 2011-11-09 18:26:40

9

請參閱SQLAlchemy源代碼中的beaker caching example,以瞭解如何將高速緩存集成到SQLAlchemy應用程序中。燒杯可以使用Memcached作爲緩存存儲。

+0

死鏈接。無論如何,燒杯顯然已被dogpile.cache取代:http://techspot.zzzeek.org/2012/04/19/using-beaker-for-caching-why-you-ll-want-to-switch-到dogpile.cache / – 2014-04-20 23:51:18