天天看點

Redis簡介起源特性典型使用場景

起源

2008年,意大利一家創業公司Merzia的創始人Salvatore Sanfilippo為了避免MySQL的低性能,親自定做一個資料庫,并于2009年開發完成了Redis的最初版本。

Salvatore Sanfilippo自己也沒有想到,短短的幾年時間,Redis就擁有了龐大的使用者群體。Hacker News在2012年釋出了一份資料庫的使用情況調查,結果顯示有近12%的公司在使用Redis。國内如新浪微網誌、街旁和知乎,國外如GitHub、Stack Overflow、Flickr、暴雪和Instagram,都是Redis的使用者。

特性

redis是一個開源的使用ANSI C語言編寫、支援網絡、可基于記憶體亦可持久化的日志型、Key-Value資料庫。它具有以下特性:

  1. 速度快,性能高

    Redis的資料的資料的操作是在記憶體裡完成的,同時再配合上高效的網絡IO模型。單台每秒能處理大約10萬次的QPS。

  2. 豐富的資料結構

    redis支援string,list,hash, set, sortedset等不同的資料類型。

  3. 多語言支援

    redis為用戶端提供了一個簡單的通信協定,現在主流的開發語言都提供了相應的client庫,包括java,c++,python,ruby,php等。

  4. 持久化

    redis支援資料的持久化,可以将記憶體中的資料儲存在磁盤中,重新開機的時候可以再次加載進行使用。

  5. 高可用,分布式

    為應對海量資料存儲的要求, redis提供了對高可用與分布式應用的支援,包括複制,cluster等。

典型使用場景

  1. 緩存系統
    Redis簡介起源特性典型使用場景
    如圖所示是一個典型的緩存系統,App Server 總是先通路緩存中的資料,如果不存在再從後端資料庫中通路。
  2. 計數器
    Redis簡介起源特性典型使用場景
    如圖所示是微網誌朋友圈,其點贊數就是電腦很好的例子。利用redis的原子自增指令incr可以實作計數器的功能。
  3. 消息隊列系統
    Redis簡介起源特性典型使用場景
    消息隊列在日常開發中使用頻率很高,Redis也提供了基于記憶體的消息隊列。當對消息可靠性要求不高時,可以使用Redis來作為消息隊列。
  4. 排行榜
    Redis簡介起源特性典型使用場景
    如圖所示是微網誌朋友圈人氣排行榜,利用redis的sortedset有序的特點,以點贊數來作為排序的參考就可以實作上述功能。
  5. 實時系統
    Redis簡介起源特性典型使用場景
    如圖所示是一個實時垃圾郵件過濾郵件系統,使用redis建構一個BloomFilter可以輕松實作這樣的系統。