Redis是一个开源(BSD许可)的内存中数据结构存储,用作数据库、缓存、消息代理和流引擎。Redis提供数据结构,如字符串(strings)、散列(hash)、列表(lists)、集合(sets)、带范围查询的排序集合(sorted sets)、位图(bitmaps)、超日志(hyperloglogs)、地理空间索引(geospatial indexes)和流(streams)。Redis具有内置复制(replication)、Lua脚本、LRU驱逐(LRU eviction)、事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster的自动分区提供高可用性。
您可以对这些类型运行原子操作,例如:附加到字符串;递增散列中的值;将元素推送到列表中;计算集合交集、并集和差集;或者获得排序集合中排名最高的成员。
为了获得最佳性能,Redis使用内存中的数据集。根据您的使用情况,Redis可以通过定期将数据集转储到磁盘或将每个命令附加到基于磁盘的日志中来持久化您的数据。如果您只需要一个功能丰富、联网的内存缓存,也可以禁用持久性。
Redis支持异步复制(主从复制),具有快速非阻塞同步和自动重新连接,并在网络拆分上进行部分重新同步。
Redis还包括:
您可以在大多数编程语言中使用Redis。
Redis是用ANSI C编写的,适用于大多数POSIX系统,如Linux、*BSD和Mac OS X,没有外部依赖关系。Linux和OS X是Redis开发和测试最多的两个操作系统,我们建议使用Linux进行部署。Redis可以在像SmartOS这样的Solaris派生系统中工作,但支持是最大的努力。没有官方对Windows版本的支持。
正在使用Redis的知名公司列表:
GitHub
Snapchat
Craigslist
StackOverflow
还有许多其他人!techstacks.io使用Redis维护了一个热门网站列表。
Redis是一种系统软件,也是一种保存用户数据的系统软件,因此它是软件堆栈中最关键的部分之一。
因此,Redis的发布周期确保了高度稳定的发布,即使是以较慢的周期为代价。
新版本发布在Redis GitHub存储库(Redis GitHub repository)中,也可以下载。公告会发送到Redis邮件列表(Redis mailing list)和推特上的@redisefeed(@redisfeed on Twitter)。
给定版本的Redis可以具有三个不同的稳定性级别:
Redis的不稳定版本位于Redis GitHub存储库(Redis GitHub repository)中的不稳定分支中。
这个分支是大多数新功能正在开发中的源代码树。不稳定不被认为是生产就绪:它可能包含关键的bug、不完整的功能,并且可能不稳定。
然而,我们努力确保即使是不稳定的分支在开发环境中的大部分时间都是可用的,而不会出现重大问题。
Redis的新的次要和主要版本从不稳定分支的分叉开始。这些分支的名称是目标发布/版本(the target release)
例如,当Redis 6.0作为候选版本发布时,不稳定的分支被分叉到6.0分支。新分支是该版本的候选发布(RC)。
在发布的时间范围内可以稳定的修复BUG和添加新功能提交到不稳定的分支,并向后移植到候选发布分支。不稳定的分支可能包括不属于候选版本并计划用于未来版本的额外内容。
第一个候选版本,即RC1,一旦可以用于开发目的和测试新版本,就会发布。在这个阶段,新版本带来的大多数新功能和更改都已准备好接受审查,发布的目的是收集公众的反馈。
后续的候选版本大约每三周发布一次,主要是为了修复bug。此时也可能添加新功能并引入更改,但速度会降低,并降低最终候选版本的潜在风险。
一旦开发结束,候选版本的关键错误报告频率下降,就可以为最终发布做好准备了。此时,该版本被标记为稳定版本,并以“0”作为其补丁级别版本发布。
稳定版本完全遵循通常的major.minor.patch语义版本控制模式。主要目标是提供关于向后兼容性的明确保证。
修补程序主要包括错误修复,很少引入任何兼容性问题。
从以前的补丁级别版本升级几乎总是安全无缝的。
只要这些功能和配置没有带来重大影响或引入与操作相关的问题,可以添加新的功能和配置指令,或者更改默认值。
次要版本通常提供成熟度和扩展的功能。
在次要版本之间升级不会引入任何应用程序级兼容性问题。
次要版本可能包括引入与操作相关的不兼容性的新命令和数据类型,包括数据持久性格式和复制协议的更改。
主要版本引入了新功能和重大更改。
理想情况下,这些不会引入应用程序级兼容性问题。
新的主要版本计划每年发布一次。
一般来说,每一个主要版本都会在六个月后发布一个次要版本。
补丁是根据需要发布的,以解决高度紧迫的问题,或者一旦稳定版本积累了足够的修复来证明它的合理性。
如需就敏感事项和安全问题联系核心团队,请发送电子邮件至[email protected].
通常,旧版本是不被支持的,因为我们努力使Redis API基本上向后兼容。
升级到新版本是推荐的方法,而且通常很简单。
最新的稳定版本始终得到充分支持和维护。
之前的两个版本只接受维护,这意味着只有针对关键错误和主要安全问题的修复才会作为补丁提交和发布:
例如,假设考虑以下版本:1.2、2.0、2.2、3.0、3.2。
当2.2版本是最新的稳定版本时,2.0和1.2都得到了维护。
一旦3.0.0版本取代2.2版本成为最新的稳定版本,2.0和2.2版本就会得到维护,而1.x版本则会终止使用。
此过程与版本3.2.0重复,之后仅保留版本2.2和3.0。
以上是指导方针,而不是一成不变的规则,不会取代常识。
2015年至2020年,Salvatore Sanfilippo关于Redis的工作由Redis有限公司赞助( Redis Ltd)。自2020年6月起,Redis有限公司赞助Redis的治理(governance of Redis)。Redis有限公司还赞助了Redis.io的托管和维护(redis.io)。
同时感谢以下为本项目捐款的人士或组织:
Redis社区感谢Redis有限公司 (Redis Ltd.), Pivotal, VMware 以及为Redis项目捐款的其他公司和人员。非常感谢。
Citrusbyte 赞助创建了Redis官方标志(由Carlos Prioglio设计),并将其版权转让给Salvatore Sanfilippo。
他们还赞助了Damian Janowski 和 Michel Martens 对该网站的初步实施。
redis.io域名由“我想要我的名字”(I Want My Name)捐赠给该项目几年。
Redis Stack是使用Redis的最佳起点。我们已经将我们所能提供的最好的技术捆绑在一个易于使用的包中。Redis Stack扩展了Redis OSS的核心功能,为调试等提供了完整的开发者体验。
除了Redis OSS的所有功能外,Redis Stack还支持:
Redis Stack的创建是为了让开发人员能够使用后端数据平台构建实时应用程序,该平台可以在几毫秒或更短的时间内可靠地处理请求。Redis Stack做到了这一点,它以最初的Redis OSS为核心,并用现代数据模型和数据处理工具对其进行了增强,并在每一个转折点上继续与复杂性作斗争。最终,Redis Stack的目标是建立一个实时数据平台,继续实现Redis OSS的理念:简单、性能和可靠性。
Redis Stack通过提供Redis领先功能所提供的所有前沿功能,统一并简化了Redis的开发者体验。RedisStack将以下功能捆绑到Redis中:JSON、搜索和查询、时间序列和概率(JSON, Search and Query, Time Series, and Probabilistic)。
总的愿景是为开发人员提供一个用于所有实时数据用例的强大平台。随着Redis在缓存之外的功能不断提升,Redis Stack是我们的起点。Redis Stack提供了开发人员喜爱的Redis核心功能,并帮助您构建性能至上的现代应用程序。
开始使用Redis Stack的最佳方法是使用 RedisInsight ,这是一个用于理解和优化Redis数据的可视化工具。
RedisInsight允许您:
有两种不同的Redis Stack软件包可供选择:
探索Redis Stack提供的跨行业和应用程序的应用现代数据模型和处理引擎的用例(use cases)。
Note
这里描述的模块是通用的,我们只列出了有代表性的用例。
几个Redis客户端库支持Redis Stack。其中包括redis-py, node_redis, NRedisStack, 和 Jedis。此外,四个更高级别的对象映射库也支持Redis Stack:Redis OM .NET, Redis OM Node, Redis OM Python, Redis OM Spring。
Redis Stack由几个组件组成,授权如下:
截至2022年11月15日,我们的Redis Stack默认二进制发行版及其包含的Redis模块已根据RSALv2和SSPL获得双重许可。使用源代码时,可以应用RSALv2或SSPLv1。
Module | RSALv1 | Binary distribution: RSALv2 Source code: RSALv2 or SSPLv1 |
---|---|---|
Redis Stack | <= 6.2.4 | >= 6.2.6 |
RediSearch | <= 2.4 | >= 2.6 |
RedisJSON | <= 2.2 | >= 2.4 |
RedisTimeSeries | <=1.6 | >= 1.8 |
RedisBloom | <= 2.2 | >=2.4 |
要快速使用Redis Stack,请参阅入门指南。
Redis Enterprise是一款企业级Redis,可在本地(on-premises)和云(in the cloud)中(在AWS、谷歌云或Azure上)使用。Redis Enterprise简化了操作、扩展和多租户,包括许多集成(例如Kubernetes),并提供了多层支持。
继续阅读,了解Redis Enterprise及其扩展产品的优势。
Redis, Inc.开发了开源和源代码可用技术,开发人员可以免费使用。其中包括:
Redis Enterprise提供三种部署选项:
Redis Enterprise Software是Redis Enterprise的本地发行版。您可以随时随地下载、安装和管理Redis Enterprise Software集群:
Redis提供了一个Kubernetes操作符,用于部署和管理Redis Enterprise集群。您可以在本地或私人或公共云中使用该运营商。
谷歌云市场还提供Redis Enterprise作为Kubernetes应用程序,以便于部署。
Redis Enterprise Cloud是Redis提供的数据库即服务。完全管理的云服务基于Redis Enterprise,可通过自助服务门户访问,该门户允许您访问订阅/数据库控制平面。Redis,Inc.管理Redis Enterprise集群和底层基础设施的复杂性。
要开始,请参阅Redis企业云快速入门。
如果您有任何问题,请告知支持人员。
您也可以直接通过云提供商的市场购买和部署Redis Enterprise Cloud:
Notes:
Redis Enterprise支持使用Active Active复制的混合(本地/云)和多云部署:
混合云与主动-结合自我管理的prem集群和Redis云集群
具有Active Active的多云-多个完全管理的Redis云集群,具有跨多个云供应商(例如AWS和Google Cloud)的地理复制数据库
Redis Stack 扩展了Redis OSS核心,提供了额外的数据模型和功能,如索引、查询和JSON数据支持。Redis Enteprise支持Redis Stack的所有功能,请参阅我们的Stack和Enterprise文档。
您可以联系Redis客户成功团队(Redis Customer Success Team),以获得规划项目和实施以及维护和优化解决方案的帮助。Redis Customer Success将直接与您合作,提供个性化的客户和产品生命周期管理、最佳实践和专家指导。