近日,Redis Labs 发布了 Redis Enterprise 新版本-V5.4.2,新版本增加了非常重要的功能。其中最大亮点是改进了双活(多活)Redis(通过 CRDB,即无冲突复制数据库)中 COUNTER 操作与开源 Redis 的的兼容性。
Redis Enterprise 5.4.2 还包含其他新功能和功能,例如:
CRDB 支持 Geo 命令
支持 SFTP 和 NFS 等可本地挂载的备份形式
支持每个数据库给团队成员单独配置告警
客户端支持可选的 TLS 验证
增加节点维护模式
双活 Redis 在 Redis 5.4.2 中的兼容性
在 5.4.2 版本之前,我们将 COUNTER 处理为 Redis 中的不同数据类型。在某些特殊场景下,这与用户使用 Redis 的方式产生了冲突。例如,不同于开源的 Redis,可以使用 Set 命令设置数值,然后使用 incr 命令进行递增;在 CRDB 中,使用 Set 命令设置某个数值后,由于没有将其处理为一个 Counter 类型,所以无法使用 incr 命令进行递增。
由于 CRDB 背后的主要设计思路之一就是允许用户平滑地从标准化 Redis 迁移到双活 Redis 中,因此我们认识到这种设计是不合理的。从现在开始,在 CRDB 的双活 Redis 中,任何 Counter 类型都会像开源 Redis 中一样处理。例如,在开源 Redis 中,Incr 命令操作之前会进行数据内容的检查,所以,在 CRDB 双活 Redis 中,我们也会对他进行检查,只有整型数据,才能进行 incr 操作。CRDB 现在也会遵循相同的算法。
上述 CRDB 改进也适用于其他 Redis 数据类型,例如包含和使用字符串的 Redis Hashes。为了更新 CRDB 处理 String 数据类型的行为,我们修改了实例的内部结构以及 CRDB 实例之间的通信协议。要使用这些改进,您需要选择 Redis Enterprise 版本 5.4.2,然后升级现有的 CRDB 实例的部署。这将自动重启选中的 Redis 实例。新创建的 CRDB 实例可以实现双活兼容性。
升级 CRDB
CRDB 协议是向后兼容的,这意味着使用新协议的 Redis Enterprise 5.4.2 CRDB 实例可以处理 5.4.2 以下版本的实例的写入操作。但是,它不是向前兼容的,因此版本比较老的旧协议的 CRDB 实例无法处理具有较新协议版本的实例的写入操作。因此,在一个实例上升级支持 CRDB 协议的新版本后,其他尚未升级的实例可能无法从已升级的实例同步,然而升级后的实例将可以同时从老版本和新版本的实例接收数据更新操作。
因此,我们强烈建议您在适当的时间窗范围内升级需要升级的所有 CRDB 实例,以避免它们之间的版本临时不一致。
要升级 CRDB 的协议,请登录 Redis Labs 网站查询详细升级操作文档及技术文档。
注意
升级以后的实例使用新版本的协议进行通信,它将自动与其他 Redis 同步之前丢失的写操作。这种操作只有在更新 CRDB 基础协议的时候才需要进行,这次是一个特殊的情况,以后的其他版本升级将不需要进行这项操作。要升级 CRDB 的协议,请按照以上升级说明进行操作。
本文转载自公众号中间件小哥(ID:huawei_kevin)。
原文链接:
https://mp.weixin.qq.com/s/uHtJiTNZUFIVyevdU5lXlg
评论