跳至內容

Redis

輕之舟百科,讓知識輕裝啟航
Redis
中文名遠程字典服務
英文名Remote Dictionary Server
簡稱Redis
開發語言ANSI C
開發者Salvatore Sanfilippo(antirez)
首次發布2009年
許可證Redis Source Available License 或 伺服器端公眾授權條款雙重授權
官方網站redis.io
最新版本8.10.1 (2026年8月18日)

Redis(全名:Remote Dictionary Server),即遠程字典服務,是一個開源的使用ANSI C語言編寫、支持網絡、可基於內存亦可持久化的鍵值對(Key-Value)數據庫,並提供多種語言的API。[1][2]Redis由意大利開發者Salvatore Sanfilippo(網名antirez)於2009年創建[2]。它常被稱為數據結構伺服器,因為其值(value)可以是字符串(String)、哈希(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set)等多種數據類型[3]。Redis在全球範圍內被廣泛使用,在眾多大型互聯網公司中承擔着緩存、消息隊列、實時數據處理等關鍵角色。[2]

Redis項目始於2009年,由意大利開發者Salvatore Sanfilippo為其初創公司的實時網絡日誌分析器尋求擴展性解決方案而創建,並於同年正式發布。最初,它被設計為一個簡單的鍵值存儲系統,因其卓越的性能和簡易性迅速獲得了開發者社區的關注。[2]

2010年3月15日起,Redis的開發工作由VMware主持。從2013年5月開始,Redis的開發由Pivotal贊助。[1]

在成長階段(2010—2013年),Redis逐漸增加了對多種數據類型的支持,並引入了發布/訂閱、事務處理等高級功能。成熟階段(2014—2017年),Redis開始支持集群、更高級的數據持久化選項以及Lua腳本等能力,從一個單機解決方案演變為可在分布式環境下運行的系統。擴展階段(2018年至今),Redis被擴展至雲服務和微服務架構中,實現了Redis Modules API等模塊化特性。[2]

數據結構

[編輯 | 編輯原始碼]

Redis支持多種數據類型,主要包括:字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)與範圍查詢,以及位圖(bitmaps)、HyperLogLog、地理空間(geospatial)索引和流(streams)等。[3][1]這些數據結構支持push/pop、add/remove及取交集、併集和差集等豐富操作,且這些操作都是原子性的。[1]

持久化

[編輯 | 編輯原始碼]

Redis提供了多種持久化選項:[4]

- RDB(Redis Database):在指定的時間間隔執行數據集的即時快照。 - AOF(Append Only File):記錄伺服器收到的每次寫入操作,可在伺服器啟動時重新播放這些操作以重建原始數據集。 - 無持久化:可完全禁用持久性,適用於純緩存場景。 - RDB + AOF:可將AOF和RDB組合在同一個實例中使用。

高可用與分布式

[編輯 | 編輯原始碼]

Redis提供了哨兵(Sentinel)模式支持高可用,以及集群(Cluster)模式支持自動故障恢復和數據分片。[2]Redis還支持主從複製(replication),數據可以從主伺服器向任意數量的從伺服器同步。[1]

其他功能

[編輯 | 編輯原始碼]

Redis內置了複製(replication)、Lua腳本(Lua scripting)、LRU淘汰(LRU eviction)、事務(transactions)等功能。[3]同時,Redis提供了鍵過期功能(可用於實現緩存)、發布訂閱功能(可用於實現消息系統)以及流水線(Pipeline)功能,使客戶端能將一批命令一次性傳輸到Redis,減少網絡開銷。[5]

許可證

[編輯 | 編輯原始碼]

Redis的原始碼長期在BSD 3-Clause許可下提供。2024年3月,Redis公司宣布從Redis 7.4開始,將採用Redis原始碼可用許可證版本2(RSALv2)或伺服器端公共許可證版本1(SSPLv1)的雙重許可方式。[6][7]

參考文獻

[編輯 | 編輯原始碼]