Redis

快速的開放原始碼記憶體內資料存放區,可做為資料庫、快取、訊息代理程式和佇列使用。

什麼是 Redis?

Redis 代表 Remote Dictionary Server,是快速的開源記憶體內鍵值資料存放區。Redis 的原始開發人員 Salvatore Sanfilippo 想要提升其義大利新創公司的可擴展性時,專案便開始。藉此,他開發了 Redis,現在用作資料庫、快取、訊息代理和佇列。

Redis 的回應時間低於一毫秒,可讓遊戲、廣告科技、金融服務、醫療保健和 IoT 等產業的即時應用程式每秒處理數百萬個請求。如今,Redis 是當今最熱門的開源引擎之一,連續五年被 Stack Overflow 評為「最愛」資料庫。由於其快速的效能,Redis 是用於快取、工作階段管理、遊戲、排行榜、即時分析、地理空間、叫車、聊天/簡訊、媒體串流和發佈/訂閱應用程式的熱門選項。

AWS 提供兩個全受管服務來執行 Redis。Amazon MemoryDB for Redis 是一種與 Redis 相容、持久的記憶體內資料庫服務,可提供超快效能。Amazon ElastiCache for Redis 是一項全受管快取服務,可加速從主要資料庫和資料存放區存取資料,使延遲時間短於一毫秒。此外,ElastiCache 還提供對 Memcached 的支援,這是另一個熱門的開源快取引擎。

若要進一步了解透過 Amazon ElastiCache for Redis 加快應用程式速度,請查閱此線上技術會談。 

Redis 的優勢

效能

所有 Redis 資料都存放在記憶體中,從而實現低延遲和高輸送量的資料存取。與傳統資料庫不同,記憶體內資料儲存不需要存取磁碟,從而將引擎延遲縮減到微秒。因此,記憶體內資料儲存能夠支援更大規模的操作,而且回應時間更快。這項優勢提供超快速的效能,平均讀取和寫入操作時間低於一毫秒,並支援每秒百萬個操作。

彈性的資料結構

其他鍵值資料存放區提供的資料結構有限,而 Redis 則提供多樣化的資料結構以滿足應用程式的需要。Redis 資料類型包括:

  • 字串 – 文字或二進位資料,最大 512 MB
  • 清單 – 按新增順序排列的字串集合
  • 資料集 – 未排序的字串集合,可與其他資料集類型交叉、合併和區分
  • 排序資料集 – 依數值排列的資料集
  • 雜湊 – 存放欄位和值清單的資料結構
  • 點陣圖 – 提供位元層級操作的資料類型
  • HyperLogLogs – 用來評估資料集獨特項目的概率資料結構
  • 串流 - 日誌資料結構訊息佇列
  • 地理空間 – 以經度/緯度為基礎的項目地圖,「附近」
  • JSON – 嵌套式、半結構化命名值物件,支援數字、字串、布林值、陣列和其他物件

簡單易用

Redis 可讓您用更少、更簡單的行編寫傳統上複雜的程式碼。藉由 Redis,您只要撰寫幾行程式碼即可存放、存取和使用應用程式的資料。差異在於使用 Redis 的開發人員使用簡單的命令結構,而不是傳統資料庫的查詢語言。例如,您使用 Redis 雜湊資料結構,僅用一行程式碼即可將資料移至資料存放區如果在沒有雜湊資料結構的資料存放區進行類似的任務,則需要撰寫許多行的程式碼才能將格式轉換為另一種格式。Redis 隨附可操控和與資料互動的原生資料結構和許多選項。Redis 開發人員可使用超過一百種開放原始碼用戶端。支援的語言包含 Java、Python、PHP、C、C++、C#、JavaScript、Node.js、Ruby、R、Go 等等。

複寫和持續性

Redis 採用主要-複本架構,並支援非同步複寫,可將資料複寫到多部複本伺服器。這不但可提升讀取效能 (因為請求可分割到多部伺服器),還能在主伺服器發生故障時快速恢復。至於持久性,Redis 支援時間點備份 (將 Redis 資料集複製到磁碟)。

Redis 並非建置為持久且一致的資料庫。如果您需要持久且與 Redis 相容的資料庫,請考慮 Amazon MemoryDB for Redis。 由於 MemoryDB 使用持久的交易日誌,該日誌跨多個可用區域 (AZ) 存放資料,您可以將其用作主要資料庫。MemoryDB 專為使開發人員能夠使用 Redis API 而無需擔心管理單獨的快取、資料庫或底層基礎設施而打造。

高可用性和可擴展性

Redis 在單一節點的主要或叢集拓撲提供主要-複本架構。這可讓您建立高度可用解決方案,以提供一致的效能和可靠性。需要調整叢集大小時,還可利用擴展和縮減或擴增等各種選項。這可讓您的叢集隨著需要擴展。

開源

Redis 是開源專案,由充滿活力的社群所支援,包括 AWS。由於 Redis 使用開放式標準、支援開放資料格式並含有豐富的用戶端,因此沒有廠商或技術鎖定的問題。

快取

Redis 是實作高可用性記憶體內快取的絕佳選項,可減少資料存取延遲、增加輸送量,以及減輕關聯式或 NoSQL 資料庫和應用程式的負載。Redis 可提供低於一毫秒的回應時間來服務頻繁要求的項目,且讓您能夠輕鬆地針對較高的負載進行擴展,無須擴充較為昂貴的後端。資料庫查詢結果快取、持久性工作階段快取、網頁快取,以及影像、檔案和中繼資料等快取常用物件都是 Redis 快取的常見範例。

聊天、簡訊和佇列

Redis 支援含模式比對功能的發佈/訂閱,以及清單、排序資料集和雜湊等各種資料結構。這讓 Redis 能夠支援高效能聊天室、即時註解串流、社交媒體饋送及伺服器互相通訊。Redis 清單資料結構可輕鬆實作輕量型的佇列。清單提供原子操作以及封鎖功能,因此適合用於需要可靠的訊息代理程式或循環清單的各種應用程式。

遊戲排行榜

對於想要建立即時排行榜的遊戲開發人員而言,Redis 是絕佳的選擇。只要使用 Redis 排序集資料結構,即可提供元素的唯一性,同時維護依使用者分數排序的清單。建立即時排名清單就和每次使用者分數變更時進行更新一樣簡單。您也可以透過利用時間戳記做為分數,使用排序集處理時間序列資料。

工作階段存放區

應用程式開發人員廣泛使用 Redis 做為高度可用且持久的記憶體內資料存放區,用以存放和管理網際網路規模應用程式的工作階段資料。Redis 提供管理使用者描述檔、登入資料、工作階段狀態和使用者專屬個人化等工作階段資料所需的低於一毫秒延遲、擴展和彈性。

豐富的媒體串流

Redis 提供快速的記憶體內資料存放區,以支援即時串流使用案例。Redis 可用於存放使用者描述檔的相關中繼資料,以及檢視數百萬個使用者的歷史記錄、身份驗證資訊/字符以及資訊清單檔案,以啟用 CDN 將影片一次串流到數百萬行動和桌面使用者。

地理空間:

Redis 提供專門打造的記憶體內資料結構和運算子,可大規模快速管理即時地理空間資料。利用 GEOADD、GEODIST、GEORADIUS 和 GEORADIUSBYMEMBER 等命令即時存放、處理和分析地理空間資料,讓 Redis 可輕鬆快速利用地理空間。您可以使用 Redis 新增以位置為基礎的功能,例如行車時間、行車距離,以及應用程式的興趣點。

Machine Learning

現代的資料驅動應用程式需要機器學習迅速處理大量、多樣化和快速的資料,並自動做出決策。像遊戲和金融服務的詐騙偵測、廣告技術的即時競標以及約會配對和共乘等使用案例,在數十毫秒內處理即時資料和做出決策的能力最為重要。Redis 提供快速的記憶體內資料存放區讓您迅速建立、訓練和部署機器學習模型。

即時分析

Redis 可與 Apache Kafka 和 Amazon Kinesis 等串流解決方案搭配使用做為記憶體內資料存放區,以低於一毫秒的延遲導入、處理和分析即時資料。Redis 非常適合用於即時分析使用案例,例如社交媒體分析、廣告目標、個人化和 IoT。

Redis 語言支援

Redis 支援大部分主要的程式設計語言和協定,包含:

Python

Java

PHP

Redis 與Memcached

Redis 和 MemCached 均為記憶體內開放原始碼資料存放區。Memcached 是一種高效能分散式記憶體快取服務,設計以簡單為主,而 Redis 則提供可有效運用在各種使用案例的豐富功能。如需詳細的功能比較,以幫助您做決定,請檢視 Redis 與 Memcached 的比較。 它們可與關聯式或關鍵值資料庫搭配使用來提升效能,例如,MySQL、PostgreSQL、Aurora、Oracle、SQL Server、DynamoDB 等。

在 AWS 上使用 Redis

AWS 提供兩個與 Redis 相容的全受管服務:Amazon MemoryDB for Redis 和 Amazon ElastiCache for Redis。

Amazon MemoryDB for Redis

Amazon MemoryDB for Redis 是一種與 Redis 相容、持久的記憶體內資料庫服務,可提供超快效能。它專為使用微型服務架構建立的現代化應用程式而建置。Amazon MemoryDB 使用多可用區域交易日誌跨多個可用區域 (AZ) 持久存放資料,以實現快速容錯移轉、資料庫復原和節點重新啟動。藉由 Amazon MemoryDB,您的所有資料都存放在記憶體中,這可讓您實現微秒級讀取和低於 10 毫秒的寫入延遲和高輸送量。 

如需有關 Amazon MemoryDB for Redis 的詳細資訊,請查閱 MemoryDB 文件

Amazon ElastiCache for Redis

Amazon ElastiCache for Redis 是一種全受管快取服務,可讓您在雲端中輕鬆設定、操作和擴展快取。藉由 ElastiCache for Redis,您可以透過快取來自主要資料庫和資料存放區的資料來加快應用程式速度並解除微秒級讀寫延遲。ElastiCache for Redis 可透過 AWS 免費方案免費試用。 

Amazon Elasticache for Redis

註冊

了解 Amazon Elasticache for Redis

開始使用 Amazon ElastiCache

開始使用適用於 Redis 的 ElastiCache

開始使用 Amazon MemoryDB 進行建置

透過使用者指南的協助開始建立。