2015-04-26 68 views
1

我一直在使用緩存很長一段時間。我們根據某個密鑰存儲數據,並在需要時從緩存中獲取數據。我知道StackOverflow和許多其他網站嚴重依賴緩存。我的問題是他們總是使用鍵值機制進行緩存,或者他們是否在緩存中形成一些類似於查詢的SQL?例如,我想查看上週的報告。此報告的內容每天都會有所不同。我是否需要針對每天存儲不同的報告(哪天作爲關鍵字),還是可以通過形成一些查詢來聚合不同關鍵字的結果?任何緩存產品(如redis)是否提供此功能?搜索/選擇緩存中的查詢

在前感謝

回答

1

緩存總是作爲鍵值哈希表完成的。這是如何保持如此之快。如果你正在查詢,那麼你沒有做緩存。

你可能試圖問的是......你可能在你的數據庫中有一個包含彙總的報告數據的表。你可以根據預先計算的表格進行查詢。

+0

Redis確實有其他一些數據類型,除了字符串值之外。它有列表和範圍以及類似的東西。但我不認爲這就是你要找的。 –

+0

我們需要在報告中使用緩存。報告可以在今天,上週,上個月等看到。因此,相同的數據集是不同報告的一部分。數據集每秒鐘流動。一個數據集屬於一個產品,每個產品也會查看報告。任何緩存解決方案都可以幫助解決這個問題嗎? – Pragmatic

1

緩存(例如memcached)快速的原因之一是其簡單的數據訪問和查詢協議。 您添加的功能越多,在效率部分就必須進行更多折衷。 「緩存」數據庫中完整的SQL引擎不是一個好設計。儘管您可以利用像Redis這樣的面向數據結構的數據庫來設計緩存數據,以滿足您的查詢需求。例如:每個日期有一組或一組散列。

更進一步,您可以使用像MongoDb或memsql這樣的數據庫,這些數據庫相當快速且具有豐富的查詢支持。因此,聚合報告一段時間不會成爲問題。 但是,作爲設計決策,您將不得不接受緩存吞吐量不如memcached或redis。