十四. 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. springboot 实现通用责任链模式

    1.概述 在我们平时的工作中,填写分布填写数据,比如填入商品的基本信息,所有人信息,明细信息,这种情况就可以使用责任链模式来处理. 2.代码实现 2.1商品对象 public class Produc ...

  2. Git for windows下Filename too long

    前情 Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理,我公司目前都是基于Git来管理项目代码的. 坑位 最近在拉取代码时报如下错误,其中有句 ...

  3. IOS多线程之NSOperation(3)

    IOS多线程之NSOperation(3) 操作优先级和服务质量 可以通过QueuePriority属性来设置operation在队列中的执行优先级 public enum QueuePriority ...

  4. JVM简介—3.JVM的执行子系统

    大纲 1.Class文件结构 2.Class文件格式概述 3.Class文件格式详解 4.字节码指令 5.类的生命周期和初始化 6.类加载的全过程 7.类加载器 8.双亲委派模型 9.栈桢详解 11. ...

  5. Qt编写物联网管理平台43-告警短信转发

    一.前言 系统在运行过程中,会实时采集设备的数据,当采集到的数据发生报警后,可以将报警信息以短信的形式发送给指定的管理员(可以是多个),这样管理员就算不在现场,也能第一时间知道哪里发生了报警,可以紧急 ...

  6. SHA256 64 位加密

    /// <summary> /// SHA256 64位加密 /// </summary> /// <param name="input">&l ...

  7. [转]CMake学习笔记(一)基本概念介绍、入门教程及CLion安装配置

    原文链接:CMake学习笔记(一)基本概念介绍.入门教程及CLion安装配置

  8. [转]export ‘default‘ (imported as ‘Vue‘) was not found in ‘vue

    问题原因:我是安装了最新的vuecli,版本大概是4.5.4,我最开始安装vuecli没有指定版本下面是我出问题的代码,其实就是自己不会用vuecli4. npm install -g @vue/cl ...

  9. VSCode远程开发Linux内核驱动

    受够了Vim的换台电脑就要倒腾N天配置的折磨,受够了Windows下Source Insight眼花的界面.这些软件虽然很多人在用,但是缺点也不少.然而Linux内核代码非常庞大,编译内核又需要在Li ...

  10. 在 .NET 中使用 Tesseract 识别图片文字

    1. 什么是 Tesseract Tesseract 是一个强大的字符识别 (OCR) 工具.它最初由 HP 发布,现在由 Google 和学术社区共同维护和开发. Tesseract 支持多种语言和 ...