2011-03-19 60 views
1

我的主要興趣在於可以使用這些工具來調整現有的基於事務的基於RDBS的應用程序的用例。
有涉及這些工具的常見設計模式的好資源嗎?memcached和Redis等工具的主要用例是什麼?

一些reasearch後,我發現了以下樣品用例Redis的,更困難的(可靠地較慢)來實現上的SQL數據存儲:

  • 訂閱或尾狀邏輯(最後發表的帖子出現在頂部)
    由於Redis的名單管理功能:

    LPUSH post:<id>:comments <comment> //posts comment 
        LRANGE post:<id>:comments 0 9  // instantly gets last 10 comments 
    
  • 標籤管理
    利用Redis的設置的管理功能(並設置intersaction)可以很容易地實現標籤系統

  • 得分板在高併發高容量服務
    Redis的可插入分數O(log(N))(即速度不夠快),然後使用有序集合檢索得分板,在SQL需要

    SELECT * FROM table 
        ORDER BY score LIMIT 0 10 
    
+0

SELECT * FROM表 ORDER BY得分LIMIT 0 10 是不是所有的壞,如果索引設置。只要說' – BMiner 2011-03-25 20:06:08

回答

1

Redis和Memcached是內存中的數據存儲。主要區別在於,在Redis時,Memcached不是持久性的(內容在服務器重新啓動時刷新)。此外,Redis還提供了對多個數據結構(如集合)的支持。

內存數據存儲最常見的用例是緩存。 Memcached幾年來一直是最受歡迎的選擇。 Redis可以使用屬性配置來解決幾乎所有的Memcached任務。

因爲Memcached不是持久性的,所以不能信任存儲持久性數據。這就是爲什麼它的最佳用法是作爲緩存存儲的原因。

Redis畢竟是一個數據庫。這意味着緩存只是其應用之一。一般來說,每當你需要一個非常快速的數據存儲時,Redis是一個非常好的選擇。用戶案例包括日誌記錄,隊列系統,索引。

舉幾個例子:

  • Resque是Redis的支持Ruby庫創建後臺作業
  • 黽才能使用Redis as fast-storage存儲用戶數據變化的基礎設施。數據然後被後處理爲MySQL。
+0

要增加一件事,你可以像MySQL一樣使用Redis。緩存是Redis廣泛使用的,但我使用它來運行博客和社交網絡。幾乎MySQL可以做的任何事情,Redis可以(更快) – Colum 2011-03-20 01:02:53

0

我會說這些「記憶」數據庫是主要用途(在RDBMS性能優化方面)是緩存的目的,即使這個網站是using Redis for caching。你可以找到一些關於StackOverflow如何使用它的信息。here