Redis
一种快速、开源的内存数据存储,可用作数据库、缓存、消息代理和队列。
什么是 Redis?
Redis 表示远程字典服务器 (Remote Dictionary Server),是一种快速、开源的内存键值数据存储。该项目始于 Redis 的原始开发商 Salvatore Sanfilippo,他希望提高其意大利初创公司的可扩展性。那时,他开发了 Redis,这款产品现在被用作数据库、缓存、消息代理和队列。
Redis 可提供亚毫秒级的响应时间,支持游戏、广告技术、金融服务、医疗保健和物联网等行业的实时应用程序每秒数百万次请求。如今,Redis 已成为当今最受欢迎的开源引擎之一,连续五年被 Stack Overflow 评为“最受欢迎”的数据库。快速的性能使 Redis 成为缓存、会话管理、游戏、排行榜、实时分析、地理空间、叫车、聊天/消息收发、媒体流和发布/订阅应用程序的热门选择。
由光环新网运营的亚马逊云科技中国(北京)区域和由西云数据运营的亚马逊云科技中国(宁夏)区域分别提供两种完全托管的服务来运行 Redis。Amazon MemoryDB for Redis 是一项兼容 Redis、可实现数据持久存储的内存数据库服务,可提供超快的性能。Amazon ElastiCache for Redis 是一项完全托管的缓存服务,可加快主数据库和数据存储的数据访问速度,延迟仅几微秒。此外,ElastiCache 还支持另一种热门的开源缓存引擎 Memcached。
要详细了解如何使用 Amazon ElastiCache for Redis 增强您的应用程序,请查看此在线技术讲座。
Redis 的优势
性能
所有 Redis 数据都驻留在内存中,可实现低延迟和高吞吐量的数据访问。与传统数据库不同,内存数据存储不需要访问磁盘,因此可将引擎延迟减少到几微秒。因此,内存数据存储可以支持超出一个量级的操作和响应时间。其结果是实现了极快的性能,平均读取或写入操作所需时间不到 1 毫秒,并支持每秒执行数百万次操作。
灵活的数据结构
与其他提供有限数据结构的键值数据存储不同,Redis 有各种各样的数据结构来满足您的应用程序需求。Redis 数据类型包括:
- 字符串 — 大小不超过 512MB 的文本或二进制数据
- 列表 — 按添加顺序排列的字符串集合
- 集 — 一个无序的字符串集合,能够与其他集类型相交、合并和比较
- 排序集 — 按值排序的集合
- 哈希 — 用于存储字段和值列表的数据结构
- 位图 — 一种提供位级操作的数据类型
- 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 是一个开源项目,由包括亚马逊云科技在内的充满活力的社区提供支持。由于 Redis 基于开放标准、支持开放数据格式,并具有丰富的客户端集,因此没有供应商或技术的束缚。
热门 Redis 使用案例
缓存
Redis 是实施高度可用的内存中缓存的理想选择,可减少访问延迟、提高吞吐量并减轻关系数据库或 NoSQL 数据库和应用程序负载。Redis 可以在亚毫秒级响应时间内提供频繁请求的项目,使您能够轻松扩展以适应更高的负载,而不会增加成本更高的后端。数据库查询结果缓存、持久会话缓存、网页缓存以及常用对象(如图像、文件和元数据)的缓存都是使用 Redis 进行缓存的常见示例。
聊天、消息收发和队列
Redis 通过模式匹配和各种数据结构(如列表、排序集和哈希)支持发布/订阅。这使 Redis 能够支持高性能聊天室、实时评论流、社交媒体源和服务器互通。使用 Redis 列表数据结构可以轻松实施轻量级队列。列表提供原子操作和阻止功能,使其适用于需要可靠的消息代理或循环列表的各种应用程序。
游戏排行榜
Redis 是希望建立实时排行榜的游戏开发员的热门选择。只需使用 Redis 排序集数据结构,该结构可实现元素的唯一性,同时维护按用户分数排序的列表。创建实时排名列表就像在用户分数每次更改时进行更新一样简单。您还可以使用排序集,通过使用时间戳作为分数来处理时间序列数据。
会话存储
作为具有高可用性和持久性的内存数据存储,Redis 是应用程序开发人员用来存储和管理 Internet 规模应用程序的会话数据的热门选择。Redis 提供管理会话数据(如用户配置文件、凭证、会话状态和特定于用户的个性化)所需的亚毫秒级延迟、规模和弹性。
富媒体串流
Redis 提供快速的内存数据存储,以支持直播串流使用案例。Redis 可用于存储有关用户个人资料和观看历史记录的元数据、数百万用户的身份验证信息/令牌,以及清单文件,使 CDN 能够同时向数百万移动和桌面用户流式传输视频。
地理空间
Redis 提供专门构建的内存中数据结构和运算符,可大规模快速管理实时地理空间数据。GEOADD、GEODIST、GEORADIUS 和 GEORADIUSBYMEMBER 等命令可以实时存储、处理和分析地理空间数据,使用 Redis 可以轻松快捷地管理地理空间。您可以使用 Redis 为应用程序添加基于位置的功能,如行驶时间、行驶距离和兴趣点。
机器学习
现代数据驱动型应用程序需要机器学习来快速处理海量、各种类型和速度的数据,并实现决策自动化。对于游戏和金融服务中的欺诈侦测、广告技术中的实时竞价,以及约会和拼车中的配对等使用案例,能够处理实时数据并在数十毫秒内做出决定。Redis 为您提供快速的内存数据存储,可快速构建、训练和部署机器学习模型。
实时分析
可将 Redis 与 Apache Kafka 和 Amazon Kinesis 等流媒体解决方案搭配使用,用作内存数据存储,以便在亚毫秒级延迟的情况下摄取、处理和分析实时数据。Redis 是实时分析使用案例的理想选择,如社交媒体分析、广告定位、个性化和物联网。
Redis 与Memcached
Redis 和 Memcached 都是内存中的开源数据存储。Memcached 是一种高性能的分布式内存缓存服务,旨在简化操作,而 Redis 则具有丰富的功能组合,使其适用于各种用例。它们使用关系数据库或键值数据库来提高性能,例如 MySQL、PostgreSQL、Aurora、Oracle、SQL Server、DynamoDB 等。
在亚马逊云科技上使用 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 可通过亚马逊云科技免费套餐免费试用。
注册
开始使用 Amazon ElastiCache
使用 Amazon MemoryDB 开始构建
借助用户指南开始构建。