2012-01-30 55 views
13

我有一些表格數據,由於無關的問題證明實時離開SQL Server太慢。隨着我們獲得更多用戶,這隻會變得更糟,所以我正在考慮使用Redis作爲前端緩存來存儲用戶的表格可分頁數據。我應該如何使用Redis作爲SQL Server的緩存?

在大約10分鐘後,此數據可能會過時,此後我想再次獲取記錄集並將其放入Redis中。

該應用程序是一個.NET MVC應用程序。我在想,當用戶登錄到應用程序時,這些數據會從數據庫中取出(大約需要10秒),然後放入Redis,準備好被MVC客戶端使用。我會把這個數據過期,然後當它變得陳舊時,它會從SQL Server數據庫中重新獲取。

這一切聽起來合理嗎?我是有點害怕的是:

  1. 用戶可以得到頁之前的數據是Redis的
  2. 如果Redis的下降,或者不迴應我需要確保視圖模型可以得到直接填充從SQL SErver沒有Redis在那裏
+1

維多利亞,你可能會發現[這篇文章](有趣的是,這個帖子)(http://www.brentozar.com/archive/2011/11/11/how-stackoverflow-scales-sql-server-video/)。在第15分鐘左右,他展示了整合Redis的可能方法。 – uvita 2012-01-30 22:02:20

+0

謝謝我會看看 – Victoria 2012-01-31 21:18:21

+1

@uvita你可以添加這個作爲答案,因爲我想接受它 - 是我正在尋找的完美解決方案 – Victoria 2012-02-01 16:57:38

回答

1

你可以使用類似MemcacheD的東西在內存中存儲緩存頁面。

您可以在緩存的對象上設置10分鐘的有效性。之後,緩存將自動刪除該對象。

您的實際存儲庫必須做下列步驟操作:
1.檢查緩存爲你想要的數據,如果它的存在,大量使用它
2.如果緩存的數據不存在,請SQL服務器去取回它
3.更新與從SQL Server

我以前使用的Enyim客戶端返回的數據緩存。它效果很好。 https://github.com/enyim/EnyimMemcached

我也可能使用類似Quartz的東西來安排後臺任務來初始化緩存。 http://quartznet.sourceforge.net/

+0

我也喜歡Redis的想法。 Redis的實現與Memcached非常相似......有些人認爲它同樣快或者更快,並且它有更多的功能。我不能推薦它,因爲我從來沒有在一些NodeJS演示應用程序之外使用它 – 2012-05-02 02:54:08

3

我會去執行服務堆棧redis,here是所有需要的細節。與其他nosql相比,Redis在進行緩存時特別好。但是如果你的讀寫應用程序很高,我會堅持把nosql數據庫作爲數據庫與SQL服務器結合使用。這將有助於可擴展性。

請讓我知道是否需要任何進一步的細節。你只需要啓動nuget命令,你幾乎可以開始運行。

相關問題