跳转到内容

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]

参考文献

[编辑 | 编辑源代码]