47

Redis发布带有“流式”数据类型的5.0版本

 5 years ago
source link: http://www.infoq.com/cn/news/2018/11/Redis-5-Released?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

在版本4发布的15个月之后,Redis最近宣布了其流行数据库的第5个版本。这个版本的主要特性是对一种新数据类型“流”的支持。流是一种仅能追加的数据结构,可以在相同消费者组内被多个协作的客户端用作日志处理。流就基于 Rax 实现的,它是个基数树库。

流支持快速查找和范围查询,这些是构建聊天系统、消息代理、排队系统和可以从 统一日志 模式 受益的大多数系统。流在概念上类似于Apache Kafka中支持消费者组的消息传递机制,但本质上又很独特。流还支持消息持久化及主/副本复制功能。这个数据类型在版本4中 规划 ,现在在版本5中已经可以使用,并为其提供了详尽的 文档

Redis 5对排序集做了优化,并提供了新的命令来从排序集的起点和终点弹出元素。ZPOPMAX或BZPOPMAX命令会分别以非阻塞和阻塞模式返回和移除最高分数元素。类似地,ZPOPMIN或BZPOPMIN命令会返回和移除最低分数元素。开发者可以使用排序集的这些命令来模拟列表功能。

在最新版本中,通过引入集群(Clusters)和定时器(Timers)API,Redis模块也得到了扩展。 定时器API 允许模块创建毫秒精度的定时器以及一个回调函数。集群API(不要与Redis的服务器集群混淆)提供了一种抽象来实现集群化的消息总线。这样,一个节点就可以以类似于发布/订阅系统的方式来向某个特定节点或所有节点发送消息了。

这次版本发布还在背后做了一些性能方面的提升,比如改进的内存热点碎片整理以及改进的HyperLogLog 算法 。大多数命令现在都支持在客户端使用“<command_name> HELP”快速查看命令行帮助信息,比如,XINFO HELP可以查看新的流功能方面的帮助信息。

新版本中还加入了LOLWUT命令,对Redis用户来说,这个命令更像是一个复活节彩蛋,技术上倒用处不大,因为LOLWUT会产生 Georg NeesSchotter 这样的计算机艺术的随机变体。花费一些不产生技术价值的时间来探索60年代的某些事物,LOLWUT就诞生于这样的需求。在那个年代,作者认为更容易“ 用黑客视角谈论技术,没有障碍或者预先思索过的想法,极限就是探索 ”。

除了需要向后兼容的场景,最新的Redis版本终于不再使用“从”(slave)这个术语了,而改为使用“副本”(replica)。

查看英文原文: https://www.infoq.com/news/2018/10/Redis-5-Released


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK