Redis 是一种快速、开源、内存键值数据结构存储库。Redis 提供了一组通用的内存数据结构,您可以通过这些结构轻松创建各种自定义的应用程序。关于 Redis 的主要使用案例包括缓存、会话管理、pub/sub 以及排行榜。这是当今广受欢迎的键值存储数据库。它由 BSD 授权、采用优化的 C 语言代码编写,并支持多种开发语言。Redis 是 REmote DIctionary Server 的首字母缩略词。

由于其速度和易用性,Redis 成为需要一流性能的 Web、移动、游戏、广告技术、物联网应用程序的理想之选。AWS 通过一个名为适用于 Redis 的 Amazon ElastiCache 的完全托管并优化的数据库服务来提供 Redis 支持,同时也让客户能够在 AWS EC2 上运行自我管理型 Redis。

Amazon EC2 Container Service

入门
Benefit_ElastiCache_Performance

Redis 的所有数据均位于其服务器的主内存中,而大部分的数据库管理系统则将数据存储在磁盘或 SSD 上。由于不再需要访问磁盘,Redis 等内存数据库可以避免时间延迟,借助较简单的使用较少 CPU 指令的算法访问数据。执行典型操作的时间不超过 1 毫秒。

Benefit_ElastiCache_data_structure

Redis 允许客户存储映射到各种数据类型的键。基本的数据类型是字符串,它可以是大小最多为 512MB 的文本或二进制数据。Redis 还支持按添加顺序列出的字符串列表、无序字符串的集合、按分数排序的有序集、存储一系列字段和值的哈希表、计算一个数据集中唯一项目的 HyperLogLog。使用 Redis 可以在内存中几乎存储所有类型的数据。

Benefit_ElastiCache_easeofuse

Redis 带有许多工具,借助这些工具,可以加快开发和运营的进程并使之简单化,其中包括 Pub/Sub,它会将要提供给订阅者的消息发布到渠道,是聊天和消息传送系统的理想之选;TTL 密钥,它们可以拥有确定的生存时间,在该时间之后,它们会将自身删除,这有助于避免数据库中充满不需要的数据;原子计数器,可以确保竞争条件不会产生不一致的结果;Lua,一种功能强大的轻量级脚本语言。

Benefit_ElastiCache_replication

Redis 采用的是主从架构,并支持异步复制,用户执行此类复制时可以将数据复制到多个从属服务器。它能够提供更好的读取性能 (因为在服务器之间可以拆分请求)和恢复功能 (主服务器发生中断时)。

为了提供持久性,Redis 支持时间点快照 (将 Redis 数据集复制到磁盘) 和创建仅附加文件 (AOF),以在写入每个数据变更项时将其存储到磁盘。如果发生中断,这两种方法中的其中任何一种都能使 Redis 数据快速恢复。

Benefit_ElastiCache_languageSupport

一百多个开源客户端可供 Redis 开发者使用。支持的语言包括 Java、Python、PHP、C、C++、C#、JavaScript、Node.js、Ruby、R、Go 等。

Redis 位于另一数据库的“前端”,可以创建一个高性能的内存中的缓存,以降低访问延迟、提高吞吐量、减轻关系数据库或 NoSQL 数据库的负载。

Redis 非常适合会话管理任务。可借助会话密钥上适当的 TTL 直接使用 Redis 作为快速键值存储库,来管理您的会话信息。一些在线应用程序 (包括游戏、电子商务网站和社交媒体平台) 通常都需要进行会话管理。

借助 Redis 有序集数据结构,元素可以保留在列表中,并按其分数进行排序。这样,用户便能够轻松创建动态排行榜,以展示谁是游戏赢家,或谁发布了最受欢迎的消息,或用于展示谁处于领先地位的任何其他内容。

需要时,Redis 可以测量并限制事件的速率。您可以使用与客户端 API 密钥关联的 Redis 计数器,计算某个特定时间段内的访问请求数量,并在超过限制时采取一定的措施。限速器通常用于限制论坛上的帖子数量、限制资源使用率,以及控制垃圾邮件的影响。

借助 Redis 列表数据结构,客户能够轻松实施一个轻量级、持久化的队列。这类列表提供了原子操作和屏蔽功能,适用于各种需要可靠消息代理或循环表的应用程序。

Redis 支持 PUB/SUB 标准功能和模式匹配。这使得 Redis 能够支持高性能的聊天室、实时评论流以及服务器内部通信。您也可以使用 PUB/SUB 基于发布的事件触发操作。

适用于 Redis 的 Amazon ElastiCache 是一种完全托管的、与 Redis 兼容的内存数据结构服务。