Redis 3.2.0 is out!

Salvatore Sanfilippo

Redis 3.2.0 发布!

原文由 Salvatore Sanfilippo 发布,订阅该博客

比预期花费了更长时间,但我们终于迎来了它——Redis 3.2.0 稳定版正式发布,其中的改动将对大量 Redis 用户有所帮助。至此我已多次介绍过这些变化,其中最重要的包括:

  • GEO API。可按经纬度为任意数据建立索引,并按半径进行查询,速度与易用性与其他 Redis 数据结构别无二致。API 文档见:http://redis.io/commands/#geo。感谢 Matt Stancliff 提供了初始实现,虽然经过了重构,但至今仍是 GEO API 的核心;也感谢 ARDB 的开发者提供了 Matt 所使用的地理索引代码。
  • 全新的 BITFIELD 命令允许将 Redis 字符串用作由多个指定大小和偏移量的整数组成的位数组。它支持对这些小(或大)整数进行自增和自减,将其作为计数器使用,并可对溢出行为进行精细控制。http://redis.io/commands/bitfield。感谢 Yoav Steinberg 推动了这个疯狂的想法并激励我完成了实现。
  • 对 Redis Cluster 的多项改进,包括 redis-trib 的再平衡能力以及更完善的副本迁移。不过,虽然在 “unstable” 分支中已实现了对 NAT 环境和 Docker 端口转发的支持,但出于成熟度考虑并未向后移植到 3.2。
  • 对 Lua 脚本复制的改进。现在可以使用“effects replication”来编写包含副作用的脚本。相关文档见:http://redis.io/commands/EVAL。感谢 Yossi Gottlieb 促成了这一特性的加入并协助了设计。
  • 我们现在拥有了一个真正强大的 Lua 脚本调试器:https://www.youtube.com/watch?v=IMvRfStaoyM,并已在 redis-cli 中提供支持。感谢 Itamar Haber,自 Lua 脚本功能诞生之初他就一直在编写复杂的脚本,他非常期待这一功能并在开发过程中提供了帮助。
  • 得益于 Oran Agra 对 SDS 和 Jemalloc 尺寸分类配置的改动,Redis 现在的内存效率更高。此外,Matt Stancliff 贡献的全新 List 内部表示仅需以往表示大列表所需内存的一小部分!
  • 最后,在读操作期间,从节点和主节点对于哪些键已过期终于达成了一致。早就该如此了 :-)
  • SPOP 现在接受一个可选的 count 参数。感谢 Alon Diamant 提供了初始实现。我后来为了性能基本重写了一遍,最终得到了一个相当快的版本。
  • RDB AUX 字段。现在你的 RDB 文件内部会包含一些信息,比如生成它的服务器、生成日期等等。希望不久后 redis-cli 就能解析这些字段(在 3.2.1 中)。这只需要少量的工作,但老实说,我也是写到这里才想起来。
  • RDB 加载现在更快了。
  • Sentinel 现在可以扩展以监控更多的主节点,但应将其视为高级测试版而非稳定版,因此在部署前请务必在你的环境中仔细测试,Sentinel 内部有大量代码发生了变更。
  • 还有许多其他改进,但这份清单已经足够长了。

衷心感谢所有让此版本得以发布的贡献者、可爱而令人鼓舞的 Redis 用户群体,以及赞助了 3.2.0 中大量工作的 Redis Labs。

在过去的几周里,我们还开发了一项有趣的新特性,它将在 Redis 的后续版本中发布,并将于 5 月 10 日至 11 日在旧金山举办的 RedisConf 2016 上公布,敬请期待!

再多说一句关于稳定性的事。我一直在强调,软件的稳定性并非非黑即白。就好像有粉色、黄色和绿色一样。不,开个玩笑。还是那句老话,总是处于灰色地带。所以 3.2.0 看起来很稳固,但毕竟还是刚出炉的新鲜货。建议逐步开始使用,看看它在你那里的表现如何,并请及时报告任何问题。不过话说回来,由于它在 RC 阶段停留了很长时间,那些迫切需要新特性而急于部署的勇敢用户已经对其进行了测试。

3.2.0 的完整更新日志见:https://raw.githubusercontent.com/antirez/redis/3.2/00-RELEASENOTES

可在 http://download.redis.io 获取 Redis 3.2.0 的压缩包,或从 GitHub 上 antirez/redis 仓库拉取 3.2.0 标签。

祝使用愉快!

本文章由 muse-spark-1.2-contributor 进行翻译

评论