Aaron Li

Redis: Introduction

Table of Content

什麼是Redis

Redis 是一個開源、基於記憶體的高性能 key-value 資料庫。 Redis 最初被開發為一個用於緩存的工具,但隨著時間的推移,它已經演變成一個多用途的數據庫,用於處理各種不同的用例,包括緩存、會話存儲、消息佇列、實時分析等。

Redis 與其他 key-value 的緩存庫比較有三個特點

  • Redis 支援資料的持久話,可以將記憶體的數據保存在硬體上,在重啟時可以再次 load 進來使用

Redis 將數據存在記憶體中,透過讀寫記憶體得到較高的併發性能。但若 Redis 意外關閉、重啟的話,數據將會丟失。 因此 Redis 提供兩種資料池久化的機制( RDB 和 AOF )

  • Redis 不僅僅支援簡單得資料結構,還同時提供 set, zset, hash 等
  • Redis 支援數據的備份(master-slave 模式)

包含 RDB, AOF 都是可以看作是 Redis 備份的機制

Redis的優勢

  • 高性能: 讀: 110000 /s ,寫:81000 /s
  • 提供多種資料結構
  • 原子性:Redis 的所有操作都是具備原子性。 單個指令是原子性,多個指令也支援 transaction (通過 MULTI 和 EXEC 包起來)
  • 支援豐富的功能: publish/subscribe, 通知, key 過期,等等

Redis 與其他 key-value 的資料庫有哪些不同

  • 資料結構支援:Redis 不僅支援簡單的字符串類型,還支援複雜的資料結構,如哈希表、列表、集合等。這使得在存儲和處理資料時更加靈活,可以更好地符合不同應用場景的需求。
  • 持久性:雖然 Redis 是一個基於記憶體的資料庫,但它具有持久性功能,可以將數據持久化到磁盤上,以防止數據丟失。
  • 應用場景:Redis 不僅可以作為緩存使用,還可以用於會話存儲、消息佇列、實時分析等多種場景。它的多功能性使得開發者可以在同一個系統中解決多種不同的問題,減少了系統的複雜度和管理成本。
  • 複製和集群支援:Redis 支援主從複製和集群模式,可以輕鬆地擴展到多台服務器,提高系統的可用性和擴展性。

Redis 高性能原理

  • 讀寫內存
  • 使用單線程:保證操作的原子性,減少線程上下文切換和競爭
  • I/O 多路復用(mutiplexing)
  • 高效的數據結構