「每天一個知識點」Redis及其他緩存數據庫的區別

點擊上方"java全棧技術"關注,每天學習一個java知識點

「每天一個知識點」Redis及其他緩存數據庫的區別

前面文章講過

這次給大家整理一篇Redis及其他緩存數數據庫的區別。

Redis 的優點

  1. 性能極高。因為數據存在內存中,類似於HashMap,HashMap的優勢就是查找和操作的時間複雜度都是O(1)
  2. 支持豐富數據類型。支持string,list,set,sorted set,hash
  3. 支持事務,操作都是原子性。所謂的原子性就是對數據的更改要麼全部執行,要麼全部不執行,同時Redis還支持對幾個操作全並後的原子性執行。
  4. 豐富的特性。支持發佈/訂閱(publish/subscribe)、通知,可用於緩存,消息,按key設置過期時間,過期後將會自動刪除

Redis 與其他 key - value 緩存產品有以下特點:

  1. Redis支持數據的持久化,可以將內存中的數據保存在磁盤中,重啟的時候可以再次加載進行使用。
  2. Redis不僅僅支持簡單的key-value類型的數據,同時還提供list,set,zset,hash等數據結構的存儲。
  3. Redis支持數據的備份,即master-slave模式的數據備份。

Redis和Memcached的區別

Redis常被拿來和高性能鍵值緩存服務器Memcached進行對比,性能相差無幾。

  1. Redis不僅僅支持簡單的K/V類型的數據,同時還提供List,Set,Hash等數據結構的存儲,而Memcached只能存儲普通的字符串鍵。
  2. Memcached用戶只能通過APPEND的方式將數據添加到已有的字符串的末尾,並將這個字符串當做列表來使用。但是在刪除這些元素的時候,Memcached採用的是通過黑名單的方式來隱藏列表裡的元素,從而避免了對元素的讀取、更新、刪除等操作。相反的Redis的List和Set允許用戶直接添加和刪除元素。
  3. Redis和Memcached都是將數據存放在內存中,都是內存數據庫。不過Memcached還可用於緩存其他東西,例如圖片、視頻等等;
  4. 虛擬內存–Redis當物理內存用完時,可以將一些很久沒用到的Value 交換到磁盤;
  5. 分佈式–設定Memcached集群,利用magent做一主多從;Redis可以做一主多從。都可以一主一從;
  6. 存儲數據安全–Memcached掛掉後,數據沒了;Redis可以定期保存到磁盤(持久化);
  7. 災難恢復–Memcached掛掉後,數據不可恢復; Redis數據丟失後可以通過AOF恢復;
  8. Redis支持數據的備份,即Master-Slave模式的數據備份;
  9. 應用場景不一樣:Redis出來作為NoSQL數據庫使用外,還能用做消息隊列、數據堆棧和數據緩存等;Memcached適合於緩存SQL語句、數據集、用戶臨時性數據、延遲查詢數據和Session等。

Redis和其他數據庫的區別

「每天一個知識點」Redis及其他緩存數據庫的區別


分享到:


相關文章: