2012-06-05 23 views

回答

25

使用Redis代替傳統的RDBMS有很多潛在的好處和潛在的缺點。他們確實是非常不同的野獸。

只對潛在的缺點聚焦:

  • 的Redis是一個內存中儲存:您的所有數據必須適合在內存中。 RDBMS通常將數據存儲在磁盤上,並將部分數據緩存在內存中。使用RDBMS,您可以管理比內存更多的數據。有了Redis,你不能。

  • Redis是一個數據結構服務器。沒有查詢語言(只有命令),也不支持關係代數。您不能提交即席查詢(就像您可以在RDBMS上使用SQL一樣)。所有數據訪問都應由開發人員預期,並且必須設計正確的數據訪問路徑。失去了很多靈活性。

  • Redis爲持久性提供了2個選項:常規快照和僅附加文件。它們都不如提供重做/撤銷記錄,塊校驗,時間點恢復,閃回能力等的真實交易服務器安全......

  • Redis只提供基本安全性(根據訪問權限)在實例級別。 RDBMS都提供細粒度的每對象訪問控制列表(或角色管理)。

  • 獨特的Redis實例不可擴展。它只能在單線程模式下在一個CPU內核上運行。爲了獲得可伸縮性,必須部署和啓動多個Redis實例。分發和分片在客戶端完成(即開發者必須照顧他們)。如果將它們與唯一的Redis實例進行比較,則大多數RDBMS提供更高的可伸縮性(通常在連接級別提供並行性)。他們是多處理(Oracle,PostgreSQL,...)或多線程(MySQL,Microsoft SQL Server,...),受益於多核機器。

在這裏,我只是描述的主要缺點,但請記住,也有很多的好處,使用Redis的(非常快,很好的併發支持,低延遲,協議流水線,好輕鬆實現樂觀併發模式,良好的可用性/複雜性比例,卓越的支持從薩爾瓦多和彼得,務實的沒有廢話的方法,...)

對於您的具體問題(圖),我建議看看neo4J或OrientDB哪些專門設計用於存儲面向圖的數據。