天天看點

簡述redis特點及其應用場景

    redis是一個開源的、遵循BSD協定的、基于記憶體的而且目前比較流行的鍵值資料庫(key-value database),它屬于非關系型資料庫,是能提供将記憶體通過網絡遠端共享的一種服務,提供類似功能的還有上周作業中提到的memcached,但相比memcached,redis還提供了易擴充、高性能、具備資料持久性等功能。

  1. redis特點

    redis的特點包括以下幾方面:

    ①速度快:redis是基于C語言實作的,所有資料是放在記憶體中,因而查詢速度非常快,每秒的查詢次數可以達到10W;

    ②單線程:單線程主要是在redis6.0之前的版本中,由于redis的資料是純記憶體的,單線程可以起到非阻塞、避免線程切換和競态消耗的效果;

    ③持久化:redis雖然是基于記憶體的,其資料也具有磁盤存儲功能,即使是出現斷電等情況也不會導緻資料丢失的現象,可做到資料的持久化;

    ④支援多種資料結構:redis支援hash、集合、有序集合等多種資料結構;

    ⑤支援多種程式設計語言:基本上主流的程式設計語言都可通路redis資料;

    ⑥功能豐富:支援lua腳本、釋出訂閱、事務、pipeline等功能;

    ⑦簡單:redis的代碼短小精悍(單機核心代碼隻有23000行左右),單線程開發容易,不依賴外部庫,使用簡單;

    ⑧主從複制:redis也可做到類似于MySQL資料庫的主從複制;

    ⑨支援高可用和分布式。

    在以上的redis特點中,我們需要特别注意單線程這點,做到一次性隻執行一條指令,另外要拒絕使用長(慢)指令,如keys、flushall、flushdb和slow lua script等。此外,在redis6.0之前的版本中,隻有3.0之前的版本是單程序單線程,而在3.0-6.0之間的版本中還有其他的線程去實作特定功能,例如實作檔案描述符的同步和關閉檔案描述符。

  1. redis典型應用場景

    redis可以在多種場景中使用,例如以下幾個典型應用場景:

    ①session共享:常見于web叢集中的Tomcat或者php中多web伺服器session共享;

    ②緩存:資料查詢、電商網站商品資訊和新聞内容等;

    ③計數器:通路排行榜、商品浏覽數這些與次數相關的數值統計場景;

繼續閱讀