专栏首页idbaRedis 6.0 新特性概览

Redis 6.0 新特性概览

前言

Redis 6 RC2 于今年3月5号Release,预计今年4.30月份发布GA版本,官方网站提供 unstable 版本的供大家测试,本文基于官方文档介绍Redis 6的重要的新特性。

作者对新特性的介绍 http://antirez.com/news/131

ACL

在Redis 5版本之前,Redis 安全规则只有密码控制 还有通过rename 来调整高危命令比如 flushdbKEYS*shutdown 等。Redis 6 则提供ACL的功能对用户进行更细粒度的权限控制 :

(1)接入权限:用户名和密码 (2)可以执行的命令 (3)可以操作的 KEY

ACL 的用法

创建用户

127.0.0.1:6379> ACL SETUSER yangyi ##创建一个账号yangyiOK127.0.0.1:6379> acl list1) "user default on nopass ~* +@all"2) "user yangyi off -@all"127.0.0.1:6379> AUTH yangyi (error) ERR AUTH <password> called without any password configured for the default user. Are you sure your configuration is correct?127.0.0.1:6379> ACL GETUSER yangyi ##获取账号yangyi的详细情况1) "flags"2) 1) "off"   #off 表示禁用,表示不能使用 yangyi 访问redis3) "passwords"4) (empty array) #密码为空5) "commands"6) "-@all" # -@all 表示不能使用任何命令,+@all 表示可以使用任何命令7) "keys"8) (empty array) # 不能访问任何key127.0.0.1:6379> ACL SETUSER alice on >p1pp0 ~cached:* +getOK127.0.0.1:6379> ACL GETUSER alice1) "flags"2) 1) "on"3) "passwords"4) 1) "2d9c75273d72b32df726fb545c8a4edc719f0a95a6fd993950b10c474ad9c927"5) "commands"6) "-@all +get"7) "keys"8) 1) "cached:*"

创建一个账号 alice 设置密码并能只能使用 get命令访问 cached前缀的key

> AUTH alice p1pp0OK> GET foo(error) NOPERM this user has no permissions to access one of the keys used as arguments> GET cached:1234(nil)> SET cached:1234 zap(error) NOPERM this user has no permissions to run the 'set' command or its subcommnad

更详细的介绍 请移步

https://redis.io/topics/acl

RESP3:新的 Redis 通信协议

RESP 全称 REdisSerializationProtocol是 Redis 服务端与客户端之间通信的协议

在 RESP2 中,所有的返回给客户端的内容都是字符串数组的形式,不管是 list 还是 sorted set。因此客户端需要自行去根据类型进行解析,这样会增加了客户端实现的复杂性。

Redis 6 开始在兼容 RESP2 的基础上,开始支持 RESP3。新的协议具体带来哪些变化呢? show me the code

详细的信息请移步

http://antirez.com/news/125

Client side caching

基于 RESP3 协议实现的客户端缓存功能。为了进一步提升缓存的性能,将客户端经常访问的数据cache到客户端。减少TCP网络交互,提升RT。不过该特性目前合并到了unstable 分支,作者说等6.0 正式GA之前,还要修改很多。我只能说 拭目以待。

推荐一篇中文blog,比较详细介绍了 客户端缓存的设计思路和遇到的各种问题,以及使用的具体场景。

https://www.kawabangga.com/posts/3590 https://www.robberphex.com/client-side-caching-in-redis-6/

IO多线程

对 Redis 比较熟悉的朋友 一看到这个多线程是不是很开心?不过不能开心太早。IO多线程其实指客户端交互部分的网络IO交互处理模块多线程,而非执行命令多线程。作者不想将执行命令多线程是因为要避免复杂性、锁的效率低下等等。此次支持IO多线程的设计大体如下:

图片来自?的公众号文章

对该特性比较详细的介绍 请移步 正式支持多线程!Redis 6.0与老版性能对比评测

Proxy

antirez开发了 Proxy 功能,让 Cluster 拥有像单实例一样的接入方式,降低大家使用cluster的门槛。不过需要注意的是代理不改变 Cluster 的功能限制,不支持的命令还是不会支持,比如跨 slot 的多Key操作

工具支持 Cluster

其实这部分没有特别突出的变化,Redis 5 将 redis-trib.rb 的功能集成到 redis-cli 。另外官方 redis-benchmark 工具开始支持 cluster 模式了,通过多线程的方式对多个分片进行压测。

Modules API

Redis 6中模块API开发进展非常大,因为Redis Labs为了开发复杂的功能,从一开始就用上Redis模块。Redis可以变成一个框架,利用Modules来构建不同系统,而不需要从头开始写然后还要BSD许可。Redis一开始就是一个向编写各种系统开放的平台。

Disque

Disque作为一个Redis Module使用足以展示Redis的模块系统的强大。集群消息总线API、屏蔽和回复客户端、计时器、模块数据的AOF和RDB等等。如果你不知道Disque,看一下repo的README就足够了。

小结

本文挑选了比较重要的 Redis 6的新功能和特性做了介绍,要全面的了解Redis 6 的进展情况可以关注作者的blog http://antirez.com/ 获取更实时的信息。

本文分享自微信公众号 - yangyidba(yangyidba),作者:yangyidba

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 分布式任务管理系统 Celery 之二

    前面一篇文章分布式任务管理系统 Celery 之一介绍了分布式任务调度队列Celery的框架以及原理,使用的例子比较简单,对实际的使用场景没有意义。本系列文章...

    用户1278550
  • redis cluster 学习 实战篇(二)

    上一篇文章 介绍了如何搭建redis cluster集群和槽位管理等动作,本文通过添加集群节点介绍集群管理工具使用以及基于主从结构的容灾切换。

    用户1278550
  • 分布式任务管理系统 Celery 之三

    前面一篇文章 分布式任务管理系统 Celery 之二 以工程实践为例进行深入学习Celery,介绍工程中Celery的配置结构,调用方法,定时任务相关知...

    用户1278550
  • Redis 的 4 大法宝,2018 必学中间件!

    Redis是什么? 全称:REmote DIctionary Server Redis是一种key-value形式的NoSQL内存数据库,由ANSI C编写,遵...

    Java技术栈
  • Redis 6.0 新特性-多线程连环13问!

    在全国一片祥和IT民工欢度五一节假日的时候,Redis 6.0不声不响地于5 月 2 日正式发布了,吓得我赶紧从床上爬起来,学无止境!学无止境!

    码大叔
  • EasyNTS集群模式采用Redis存储集群信息如何对数据持久化?

    视频云组网EasyNTS我也为大家介绍过很多了,大家应该对此有一点了解了,说白了就是为了解决网络穿透而的诞生的产品。

    EasyNVR
  • 《吊打面试官》系列-Redis双写一致性、并发竞争、线程模型

    Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行360°的刁难。作为一个在互联网公司面一次拿一...

    Remember_Ray
  • Redis6.0为何引入多线程?单线程不香吗?

    作者简介:曾任职于阿里巴巴,每日优鲜等互联网公司,任技术总监。15年电商互联网经历。

    用户7927337
  • Redis系列---redis简介01

    Remote Dictionary Server(Redis)是一个开源的使用ANSI C语言编写、支持网络、基于内存亦可持久化的日志型、key-value数据...

    Arebirth
  • Redis的三种模式:主从、哨兵、集群

    Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。普遍用于目前主流的分布...

    刘文正

扫码关注云+社区

领取腾讯云代金券