Redis 全稱 Remote Dictionary Server(即遠程字典服務),它是一個基於內存實現的鍵值型非關係(NoSQL)數據庫,由意大利人 Salvatore Sanfilippo 使用 C 語言編寫。

Redis 遵守 BSD 協議,實現了免費開源,其最新版本是 6.20,常用版本包括 3.0 、4.0、5.0。自 Redis 誕生以來,它以其超高的性能、完美的文檔和簡潔易懂的源碼廣受好評,國內外很多大型互聯網公司都在使用 Redis,比如騰訊、阿里、Twitter、Github 等等。

Redis是什麼_Redis

圖1:Redis圖標

提示:Redis官網(https://redis.io/)提供了完善的社區環境、文檔説明,以及更新支持。

常見的內存型數據庫,除 Redis 之外,還有 Oracle Berkeley DB(甲骨文旗下的一款產品)、SQlite(輕量級內存數據庫)、Memcache(鍵值型分佈式緩存數據庫)、Altibase(基於內存的高性能數據庫)。

與其他內存型數據庫相比,Redis 具有以下特點:

  • Redis 不僅可以將數據完全保存在內存中,還可以通過磁盤實現數據的持久存儲;
  • Redis 支持豐富的數據類型,包括 string、list、set、zset、hash 等多種數據類型,因此它也被稱為“數據結構服務器”;
  • Redis 支持主從同步,即 master-slave 主從複製模式。數據可以從主服務器向任意數量的從服務器上同步,有效地保證數據的安全性;
  • Redis 支持多種編程語言,包括 C、C++、Python、Java、PHP、Ruby、Lua 等語言。

與 SQL 型數據庫截然不同,Redis 沒有提供新建數據庫的操作,因為它自帶了 16 (0—15)個數據庫(默認使用 0 庫)。在同一個庫中,key 是唯一存在的、不允許重複的,它就像一把“密鑰”,只能打開一把“鎖”。鍵值存儲的本質就是使用 key 來標識 value,當想要檢索 value 時,必須使用與 value 相對應的 key 進行查找。

Redis 數據庫沒有“表”的概念,它通過不同的數據類型來實現存儲數據的需求,不同的數據類型能夠適應不同的應用場景,從而滿足開發者的需求。

Redis架構

Redis體系架構主要分為兩個部分:

  • Redis服務端
  • Redis客户端

客户端和服務端可以位於同一台計算機上,也可以位於不同的計算機上。服務端是整個架構的“大腦”,能夠把數據存儲到內存中,並且起到管理數據的作用。

Redis優勢

下面對 Redis 的優勢進行了簡單總結:

  • 性能極高:Redis 基於內存實現數據存儲,它的讀取速度是 110000次/s,寫速度是 81000次/s;
  • 多用途工具: Redis 有很多的用途,比如可以用作緩存、消息隊列、搭建 Redis 集羣等;
  • 命令提示功能:Redis 客户端擁有強大的命令提示功能,使用起來非常的方便,降低了學習門檻;
  • 可移植性:Redis 使用用標準 C語言編寫的,能夠在大多數操作系統上運行,比如 Linux,Mac,Solaris 等。

Redis應用場景

Redis 用來緩存一些經常被訪問的熱點數據、或者需要耗費大量資源的內容,通過把這些內容放到 Redis 中,可以讓應用程序快速地讀取它們。例如,網站的首頁需要經常被訪問,並且在創建首頁的過程中會消耗的較多的資源,此時就可以使用 Redis 將整個首頁緩存起來,從而降低網站的壓力,減少頁面訪問的延遲時間。

我們知道,數據庫的存儲方式大體可分為兩大類,基於磁盤存儲和基於內存存儲。磁盤存儲的數據庫,因為磁頭機械運動以及系統調用等因素導致讀寫效率較低。Redis 基於內存來實現數據存取,相對於磁盤來説,其讀寫速度要高出好幾個數量級。下表將 Redis 數據庫與其他常用數據庫做了簡單對比:

Redis與其他數據庫對比

名稱

類型

數據存儲選項

附加功能

Redis

基於內存存儲的鍵值非關係型數據庫

字符串、列表、散列、有序集合、無序集合

發佈與訂閲、主從複製、持久化存儲等

Memcached

基於內存存儲的鍵值緩存型數據庫

鍵值之間的映射

為提升性能構建了多線程服務器

MySQL

基於磁盤的關係型數據庫

每個數據庫可以包含多個表,每個表可以包含多條記錄;

支持第三方擴展。

支持 ACID 性質、主從複製和主主複製

MongoDB

基於磁盤存儲的非關係文檔型數據庫

每個數據庫可以包含多個集合,每個集合可以插入多個文檔

支持聚合操作、主從複製、分片和空間索引

Redis 基於內存來實現數據的存儲,因此其速度非常快。但是我們知道,計算機的內存是非常珍貴的資源,所以 Redis 不適合存儲較大的文件或者二進制數據,否則會出現錯誤,Redis 適合存儲較小的文本信息。理論上 Redis 的每個 key、value 的大小不超過 512 MB。

總得來説,上述數據庫各有優勢,當我們選用數據庫時,也要因地制宜,選擇一款與業務場景最相符合的數據庫。