点 Redis 8 来了——而且它是开源的

了解更多

Redis 5.0 来了!

上周,随着 5.0 版本的发布,Redis 达到了一个重要的里程碑,该版本包含多项进步和改进。其中最引人注目的是引入了 Streams。Streams 是自 HyperLogLog 在 2014 年 4 月作为 2.8.9 版本的一部分引入以来(距今四年多!)Redis 中的第一个全新的数据结构!

Streams

那么,你可能会问,什么是 Redis Streams?Redis Stream 是一种类日志的数据结构,允许你在单个键下存储多个字段和字符串值,并具有自动的、基于时间的序列。在许多方面,Streams 与其他 Redis 数据结构相似——它以类似于列表的方式排序数据,它存储类似于哈希的字段和值,它允许你像使用有序集合那样读取值的范围,并且它可以表现得有点像 Pub/Sub(或列表),具有阻塞行为,等待项目到达,从而实现对流的实时反应。

话虽如此,Redis Stream 确实是一个完全独立的东西。说它们像结构 foo 但具有特性 bar 并不完全公平。Redis Streams 有一个独特的能力使其与其他现有数据结构区别开来:消费者组允许不同的客户端以自己的位置消费流。这为 Redis 带来了全新的用途;现在,像事件溯源或统一日志架构这样的任务不仅成为可能,而且是最优的。与任何 Redis 数据结构一样,还有许多命令(事实上是 13 个)允许你与该结构交互——你可以在 redis.io 上找到这些命令的列表。

ZPOP 及相关命令

借助最新版本,有序集合现在新增了一些命令,允许你移除有序集合中得分最高 (ZPOPMAX) 或得分最低 (ZPOPMIN) 的成员。这是一个经常被请求的功能,它使得一些以前只能通过 Lua 脚本实现的模式成为可能。

伴随 ZPOPMIN 和 ZPOPMAX 的是阻塞变体 (BZPOPMIN/BZPOPMAX),它们会等待值到达,类似于列表的阻塞行为(例如 BLPOP)。因此,你不仅可以移除最高或最低的值,还可以等待成员到达。

其他改进

除了新的命令和数据结构外,5.0 版本还包括对现有内部结构的许多改进,其中包括:

  • 新的模块 API 功能
  • HyperLogLog 实现的改进
  • 许多子命令的帮助信息
  • 内存管理和报告的增强
  • RDB 存储关于键的访问频率和最近访问信息(即 LFU、LRU)
  • Lua 副本和 AOF 的改进
  • 网络和客户端连接管理的改进
  • 客户端之间的客户端识别和阻塞管理

为了找点乐子,我们还增加了一个无用但有趣的 LOLWUT 命令,它使用随机元素和命令参数生成一些计算机艺术。它没有重大的技术用途,但当你连接到未知版本的实例时,它可以作为一个不错的测试,看看 Redis 5.0 是否正常运行。

Art inside a database command

(摘自 LOLWUT:数据库命令中的一件艺术品

有关改进的更多详细信息或背景信息,欢迎查阅发行说明

Redis Enterprise

如果你渴望在企业版中尝试 Redis 5.0——特别是 Streams——你可以下载包含 Redis 5.0 的Redis Enterprise Software 5.4。并且你可以在我们完全托管的 VPC 产品上运行它。

愉快地使用 Streaming!