十四. Redis 新功能

@


1. ACL

ACL 参考官网:https://redis.io/docs/latest/operate/oss_and_stack/management/security/acl/

ACL 基本介绍:

  1. Redis ACL 是 Access Control List(访问控制列表) 的缩写,该功能限制可以执行的命令和可以访问的键。
  2. 在 Redis 5 版本之前,Redis 安全规则只有密码控制,还有通过 rename 来调整高危命令比如 flushdb,KEYS* ,shutdown 等。
  3. Redis 6 则提供 ACL 的功能对用户进行更细粒度的权限控制:
    1. 接入权限:用户名和密码
    2. 可以执行的命令
    3. 可以操作的 KEY

常用的 ACL 指令:

  1. acl list 命令展现用户权限列表
127.0.0.1:6379> acl list

  1. acl cat 命令,查看添加权限指令类型
127.0.0.1:6379> acl cat

带上参数类型名,可以查看该类型可以执行的指令

127.0.0.1:6379> acl cat string

  1. acl whoami 命令查看当前用户
127.0.0.1:6379> acl whoami

  1. acl setuser 命令创建和编辑用户 acl

acl setuser 命令创建和编辑用户 ACL

操作演示:

  1. 通过命令创建新用户默认权限
127.0.0.1:6379> acl setuser tom

在上面的示例钟,没有指定规则

如果用户不存在,将使用 just created 的默认属性来创建用户。

如果用户已经存在,则上面的命令将不执行任何操作。

  1. 设置有用户名,密码 ,ACL权限,并启用该用户
127.0.0.1:6379> acl setuser jack on >123456 ~cached*:* +get

指令 acl setuser jack on >123456 ~cached*:* +get

jack:用户名

on :表示启用

>123456 :表示密码就是 123456

~cached:*:表示只能操作的 key是以 cached: 开头的

+get :表示操作的指令只能是 get

127.0.0.1:6379> auth jack 123

  1. 给 jack 用户增加权限/删除用户
127.0.0.1:6379> acl setuser jack +set

127.0.0.1:6379> acl deluser tom

2. IO多线程

  1. IO多线程是指和客户端交互时,网络IO交互处理模块多线程,而非执行命令多线程。
  2. Redis6 执行命令依然是单线程。
  3. 也就是说,Redis 和客户端的交互是多线程,在执行指令的时候,仍然是单线程 + IO多路复用。

原理架构:

Redis 6 加入多线程,Redis 的多线程部分只用来处理网络数据的读写和协议解析,执行命令仍然是单线程。之所以这么设计是不想因为多线程而变得复杂,需要去控制 key ,lua,事务,LPUSH/LPOP等等的并发问题。整体的设计大致如下:

多线程 IO默认也是不开开启的,需要再配置文件 redis.conf 中配置 io-threds-do-reads yes io-threads 4 才行。

 io-threads 4
io-threads-do-reads yes

3. 工具支持 Cluster

  1. 如果之前的老版本的 Redis 想要搭集群需要单独安装 ruby 环境。

  2. Redis 5 将 redis-trib.rb 的功能集成到 redis-cli

  3. 另外官方 redis-benchmark 工具(性能测试工具,它可以模拟N个客户端同时向 Redis 发送 M条查询命令的应用场景) 开始支持 cluster模式了,通过多线程的方式对多个分片进行压测。

  4. 查看-如图:

[root@localhost rainbowsea]# redis-benchmark --help

4. 其它新功能-介绍

  1. RESP3 新的 Redis 通信协议:优化服务端与客户端之间通信。
  2. Client side caching 客户端缓存:基于 RESP3 协议实现的客户端缓存功能。为了进一步提升缓存的性能,将客户端经常访问的数据 cache 到客户端。减少 TCP 网络交互。
  3. Proxy 集群代理模式:Proxy 功能,让 Cluster 拥有像单例一样的接入方式,降低大家使用 cluster 的门槛。
  4. Modules API

Redis 6中模块API开发进展非常大,Redis 可以变成一个框架,利用 Moudles 来构建不同系统,而不需要从头开始写。Redis 一开始就是一个面向编写各种系统开放的平台。

5. 最后:

“在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时刻再次相遇。”

十四. Redis 新功能的更多相关文章

  1. Spring Boot 2.X(十四):日志功能 Logback

    Logback 简介 Logback 是由 SLF4J 作者开发的新一代日志框架,用于替代 log4j. 主要特点是效率更高,架构设计够通用,适用于不同的环境. Logback 分为三个模块:logb ...

  2. VS2017十五项新功能体验

    Visual Studio 2017十五项新功能体验 Visual Studio 2017正式已经于2017.3.7号正式发布,选在这一天发布也是为了纪念Visual Studio 二十周年.MVP ...

  3. Visual Studio 2017十五项新功能体验

    Visual Studio 2017正式已经于2017.3.7号正式发布,选在这一天发布也是为了纪念Visual Studio 二十周年.MVP 2017技术峰会将于这个周末(3.17)在北京举办,由 ...

  4. Redis(八)redis新功能

    redis6新功能 1 ACL Redis ACL是AccessControlList(访问控制表)的缩写,该功能允许根据可以执行的命令和访问的键来限制某些连接. 2 基本命令 acl help &g ...

  5. (二十四)linux新定时器:timefd及相关操作函数

    timerfd是Linux为用户程序提供的一个定时器接口.这个接口基于文件描述符,通过文件描述符的可读事件进行超时通知,所以能够被用于select/poll的应用场景. 一,相关操作函数 #inclu ...

  6. 二十四 Redis消息订阅&事务&持久化

    Redis数据类型: Redis控制5种数据类型:String,list,hash,set,sorted-set 添加数据,删除数据,获取数据,查看有多少个元素,判断元素是否存在 key通用操作 JR ...

  7. SpringBoot开发二十四-Redis入门以及Spring整合Redis

    需求介绍 安装 Redis,熟悉 Redis 的命令以及整合Redis,在Spring 中使用Redis. 代码实现 Redis 内置了 16 个库,索引是 0-15 ,默认选择第 0 个 Redis ...

  8. Redis 6.0 正式版终于发布了!除了多线程还有什么新功能?

    Redis 6.0.1 于 2020 年 5 月 2 日正式发布了,如 Redis 作者 antirez 所说,这是迄今为止最"企业"化的版本,也是有史以来改动最大的一个 Redi ...

  9. iOS11有哪些新功能?旧iPhone是否真的变慢了

    1. [iOS 11] iOS 11十大实用新功能简介 2.[iOS 11] iPhone二维码扫描,通过内建相机就可以完成! 3. iOS 11内建屏幕录制功能!再也不需要通过第三方应用录屏 4.  ...

  10. 如约而至,Java 10 正式发布! Spring+SpringMVC+MyBatis+easyUI整合进阶篇(十四)Redis缓存正确的使用姿势 努力的孩子运气不会太差,跌宕的人生定当更加精彩 优先队列详解(转载)

    如约而至,Java 10 正式发布!   3 月 20 日,Oracle 宣布 Java 10 正式发布. 官方已提供下载:http://www.oracle.com/technetwork/java ...

随机推荐

  1. 压缩工具之upx

    在golang项目中, 最终运行的是打包好的二进制文件,如何才能让这个文件尽可能的小呢? 1.编译阶段的参数处理 go build使用的是静态编译,会将程序的依赖一起打包,这样一来编译得到的可执行文件 ...

  2. Dockerfile&Docker-Compose之基础

    使用了很久的docker,之前却从来没有总结过, 于是开此篇来记录平常使用Dockerfile和docker-compose.yaml的点滴, 先从基础命令开始哦 [Dockerfile] Docke ...

  3. golang之go-spew

    github: https://github.com/davecgh/go-spew 我们在使用Golang(Go语言)开发的过程中,会通过经常通过调试的方式查找问题的原因,解决问题,尤其是当遇到一个 ...

  4. .net core想到哪写道哪之asp.net core的机密

    我们往往需要在项目里使用一些机密数据,比如数据库的密码,再比如一些密钥.这些东西一般来说我们都会放到配置文件里. 但是这些东西是跟自己的账号相关的,我们在一些多人合作的项目中,尤其是开源项目肯定不能直 ...

  5. The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online (The 2nd Universal Cup

    The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online (The 2nd Universal Cup. Stage 1: Qingdao) J ...

  6. 如何用Docker Compose部署项目?

    目录 前言 Docker Compose 1. Docker Compose是什么? 2. Docker Compose 的具体步骤 3. 如何在IDEA项目里面使用Docker Compose 启动 ...

  7. Redis为什么这么快之IO多路复用

    情景复现 面试官:Redis为什么这么快? 我:1. 基于内存 2. 高效数据结构 3. 单线程 4. IO多路复用 面试官:那你讲讲Redis的IO多路复用模型是什么. 我:哦,嗯,啊,呀...IO ...

  8. 【C++】类的继承的深入探讨

    继承是扩展现有类并为基类提供新功能的一种方式. 本文主要探讨一个问题:子类会包含父类所包含的一切吗? 起初,作者认为这个问题的答案是否定的,因为子类无法访问父类的private成员 但是,运行下述一个 ...

  9. S2P销讯通-主数据对于客户关系管理系统的重要性

    由于业务发展,各大企业的业务系统经历了从无到有,从简单到复杂,从而形成了一个又一个的业务系统,比如OA.HR.CRM.ERP等等. 主数据在客户关系管理系统(CRM)中扮演着至关重要的角色.主数据是指 ...

  10. DDPM论文解读

    DDPM(Denoising Diffusion Probabilistic Models) 论文研究背景 扩散概率模型(Denoising Diffusion Probabilistic Model ...