深入了解Redis 6.0

举报
Jet Ding 发表于 2020/09/29 11:24:19 2020/09/29
【摘要】 新的Redis 6对于这个世界上最受欢迎的数据库来说,并不是一个浅层次的更新。现在我们从安全、性能、易用性三个层面来看一下本次的更新。 1 安全 也许Redis 6最大、最能改变游戏规则的功能是访问控制列表(ACLs)。ACLs为Redis带来了 "用户"的概念。每个用户都可以拥有一组定义的能力,这些能力决定了他们可以运行哪些命令以及在哪些键上运行。它减少了像在生产服务器上运行FL...

新的Redis 6对于这个世界上最受欢迎的数据库来说,并不是一个浅层次的更新。现在我们从安全、性能、易用性三个层面来看一下本次的更新。

 

1      安全 

也许Redis 6最大、最能改变游戏规则的功能是访问控制列表(ACLs)。ACLsRedis带来了 "用户"的概念。每个用户都可以拥有一组定义的能力,这些能力决定了他们可以运行哪些命令以及在哪些键上运行。它减少了像在生产服务器上运行FLUSHDB这样的乌龙动作,让你可以做更复杂的任务,比如为特定的操作创建特定的用户,这样每个操作都能以最少的权限进行操作。 

JavaNode.jsPython.NET中的Redis客户端已经支持ACLs,随着Redis 6的普及,支持将迅速扩展到更多的语言和库。

 image.png

ACL将允许用户根据用户指定的权限,只访问特定的命令、键,甚至键的模式。 

除了ACLRedis 6还带来了通过SSL加密流量的能力。在这个版本之前,Redis中的加密都是在进程之外进行的,这意味着它需要其他应用程序提供加密,而且很多实例都没有被加密。这是Redis向前迈出的重要一步,可以在更多对加密有关键要求的环境中使用。

 

2      性能 

尽管Redis当之无愧地以高性能著称,但其单线程架构一直在工程师中引起争议,他们想知道Redis是否可以更快。Redis 6做了一些变化:虽然它保留了一个核心的单线程数据访问接口,但现在I/O是线程化的。 

通过将读取和写入I/O套接字的时间委托给其他线程,Redis进程可以将更多的周期用于操作、存储和检索数据,从而提升整体性能。这一改进保留了以前版本的事务特性,因此你不必重新设计你的应用程序就可以提高性能。同样,Redis的单线程DEL命令现在可以被配置为像Redis4版以来的多线程UNLINK命令一样的行为。 

本地变量的性能几乎总是无与伦比的,即使是像Redis这样高性能的数据库,也会比从堆栈或堆中访问东西慢得多。Redis 6为复杂的客户端库增加了一项新技术,实现客户端缓存层,在自己的进程中存储数据的子集。这种实现足够智能,可以管理对同一数据的多次更新,并使你的数据尽可能地保持同步, 同时保留Redis的优势与本地变量的速度。

 

3      易用性

多年来,Redis协议的第二个版本(RESP2)已经被证明是非常灵活的。它不仅支持Redis的内置数据结构,还支持Redis模块以及这些模块带来的新命令和数据。

Redis 6开始支持新版本的协议--RESP3。这个新的协议是在上一个版本的基础上进化而来的,它增加了丰富的功能,可以让接口库更好地将Redis响应与宿主语言中的变量类型进行映射。

此外,这个版本的协议还为更小巧的客户端库减少代码量提供了条件,最终将允许更快速地采用新的命令和模块。

当然,RESP2将伴随我们相当长的一段时间,因为社区需要一些时间来将软件、工具和客户端库迁移到新协议中。

但如果你想一头扎进去,现在就可以在Redis 6上试用RESP3,只需要知道目前RESP3仍处于早期开发阶段。 

Redis Cluster极大地扩展了Redis使用的多样性,但它需要一个更复杂的客户端库。在较小的语言社区中,支持集群的客户端库从未完全出现。

值得庆幸的是,Redis 6.0配备了一个集群代理,以协助不支持Redis Cluster API的语言平台连接到Redis集群。这解决了集群处理的复杂性问题,所以只需要简单的单实例库实现。 

Redis 1.0开始,开发者就可以设置密钥在给定时间后过期,这是缓存不可或缺的功能。这种过期一直依赖于采样技术,以避免许多键同时过期时出现不可预测的延迟。在Redis 6.0中,过期周期已经被重写,以允许更快的过期,更紧密地匹配生存时间(TTL)属性。此外,你现在可以调整过期时间,使其归零,以满足特定情况下的精度要求。

 

 

4      使用Redis 6 

Redis 6Redis社区开辟了广阔的新可能性。它带来了从更好的安全性到增量性能的改进,以及更容易使用和引入新的Redis使用方法。如果你准备好了,现在就可以从redis.io下载全新的版本。

 

5      参考 

https://redislabs.com/blog/diving-into-redis-6/

https://redislabs.com/blog/rediscover-redis-security-with-redis-enterprise-6/

https://redislabs.com/blog/getting-started-redis-6-access-control-lists-acls/

https://raw.githubusercontent.com/antirez/redis/6.0/00-RELEASENOTES

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。