2014-03-27 24 views
6

我很好奇,如果使用scala和光滑的,你可以創建一個靈活的緩存層(比如使用memcached)。如何在全局應用的浮油上創建緩存層?

Ruby有所謂IdentityCache陰涼庫:https://github.com/Shopify/identity_cache

它可以讓你簡單地擴展你的模型類,你告訴它使用這個緩存層(Scala中的一個特質?)。

然後,您可以通過標識告訴它僅高速緩存,或緩存協會也等

聽起來像是一個非常酷的事情,怎麼會是這樣的嵌入華而不實的設計?

+1

如何在identity_cache中處理緩存失效?你怎麼知道什麼時候可以從緩存中讀取或者何時已經過期?例如: – cvogt

+0

如果我在數據庫中爲產品添加新圖像,緩存產品是否包含它,但是在使用'cache_has_many:images'時呢? – cvogt

+0

@cvogt @cvogt在他們的文檔中,它說'IdentityCache跟蹤緩存索引的對象,並使用after_commit掛鉤使這些對象過期,並在樹被更改時使用它們。「所以,當某個事件被保存時,事件觸發到期緩存。我必須研究在更新子協會時它是如何失效的。 – loyalflow

回答

3

我正在考慮如何最近將它添加到Slick中,但我們在可預見的將來沒有分配給它的任何資源。

您可以在Slick之上構建查詢緩存。基於對基礎數據的觀察寫操作使緩存無效可能對於任意查詢非常困難。您需要限制對緩存查詢中條件的支持操作,例如只使用平等。 Oracle和其他公司對其物化視圖維護功能具有相似的限制。

+0

Hi @cvogt,你可以告訴這個功能是否已經最近在Slick中介紹過? –

+2

陽光明媚,它沒有。沒有人在這方面做過工作。 – cvogt