Redis
Redis(全名:Remote Dictionary Server),即遠程字典服務,是一個開源的使用ANSI C語言編寫、支持網絡、可基於內存亦可持久化的鍵值對(Key-Value)數據庫,並提供多種語言的API。[2][3]Redis由意大利開發者Salvatore Sanfilippo(網名antirez)於2009年創建[3]。它常被稱為數據結構伺服器,因為其值(value)可以是字符串(String)、哈希(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set)等多種數據類型[4]。Redis在全球範圍內被廣泛使用,在眾多大型互聯網公司中承擔着緩存、消息隊列、實時數據處理等關鍵角色。[3]
| 中文名 | 遠程字典服務 |
|---|---|
| 英文名 | Remote Dictionary Server |
| 簡稱 | Redis |
| 開發語言 | ANSI C |
| 開發者 | Salvatore Sanfilippo(antirez) |
| 首次發布 | 2009年 |
| 許可證 | BSD 3-Clause(至Redis 7.4前);RSALv2 / SSPLv1(自7.4起)[1] |
| 官方網站 | redis.io |
歷史
Redis項目始於2009年,由意大利開發者Salvatore Sanfilippo為其初創公司的實時網絡日誌分析器尋求擴展性解決方案而創建,並於同年正式發布。最初,它被設計為一個簡單的鍵值存儲系統,因其卓越的性能和簡易性迅速獲得了開發者社區的關注。[3]
2010年3月15日起,Redis的開發工作由VMware主持。從2013年5月開始,Redis的開發由Pivotal贊助。[2]
在成長階段(2010—2013年),Redis逐漸增加了對多種數據類型的支持,並引入了發布/訂閱、事務處理等高級功能。成熟階段(2014—2017年),Redis開始支持集群、更高級的數據持久化選項以及Lua腳本等能力,從一個單機解決方案演變為可在分布式環境下運行的系統。擴展階段(2018年至今),Redis被擴展至雲服務和微服務架構中,實現了Redis Modules API等模塊化特性。[3]
特性
數據結構
Redis支持多種數據類型,主要包括:字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)與範圍查詢,以及位圖(bitmaps)、HyperLogLog、地理空間(geospatial)索引和流(streams)等。[4][2]這些數據結構支持push/pop、add/remove及取交集、併集和差集等豐富操作,且這些操作都是原子性的。[2]
持久化
Redis提供了多種持久化選項:[5]
- RDB(Redis Database):在指定的時間間隔執行數據集的即時快照。 - AOF(Append Only File):記錄伺服器收到的每次寫入操作,可在伺服器啟動時重新播放這些操作以重建原始數據集。 - 無持久化:可完全禁用持久性,適用於純緩存場景。 - RDB + AOF:可將AOF和RDB組合在同一個實例中使用。
高可用與分布式
Redis提供了哨兵(Sentinel)模式支持高可用,以及集群(Cluster)模式支持自動故障恢復和數據分片。[3]Redis還支持主從複製(replication),數據可以從主伺服器向任意數量的從伺服器同步。[2]
其他功能
Redis內置了複製(replication)、Lua腳本(Lua scripting)、LRU淘汰(LRU eviction)、事務(transactions)等功能。[4]同時,Redis提供了鍵過期功能(可用於實現緩存)、發布訂閱功能(可用於實現消息系統)以及流水線(Pipeline)功能,使客戶端能將一批命令一次性傳輸到Redis,減少網絡開銷。[6]
許可證
Redis的原始碼長期在BSD 3-Clause許可下提供。2024年3月,Redis公司宣布從Redis 7.4開始,將採用Redis原始碼可用許可證版本2(RSALv2)或伺服器端公共許可證版本1(SSPLv1)的雙重許可方式。[1][7]