十四. Redis 新功能

devtools/2025/2/12 0:03:58/

十四. Redis 新功能

文章目录

  • 十四. Redis 新功能
  • 1. ACL
  • 2. IO多线程
  • 3. 工具支持 Cluster
  • 4. 其它新功能-介绍
  • 5. 最后:


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 4io-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. 最后:

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

在这里插入图片描述


http://www.ppmy.cn/devtools/158060.html

相关文章

ArrayList和LinkedList有什么区别?在什么情况下使用ArrayList更高效?

ArrayList和LinkedList在Java中是两种常用的数据结构,分别基于数组和链表实现。它们在性能、内存使用和适用场景上各有特点。 ArrayList与LinkedList的主要区别 数据结构: ArrayList:基于动态数组实现,元素存储在连续的内存空间…

矩阵NFC碰一碰发视频的源码技术开发攻略,支持OEM

引言 在短视频与营销深度融合的当下,矩阵碰一碰发视频功能为商家的营销推广带来了新的活力。通过简单的碰一碰操作,就能快速发布视频到多个平台,极大地提高了营销效率。本文将深入剖析矩阵碰一碰发视频的源码技术开发,带你一步步…

【R】Dijkstra算法求最短路径

使用R语言实现Dijkstra算法求最短路径 求点2、3、4、5、6、7到点1的最短距离和路径 1.设置data,存放有向图信息 data中每个点所在的行序号为起始点序号,列为终点序号。 比如:值4的坐标为(1,2)即点1到点2距离为4;值8的坐标为(6,7)…

前端开发架构师Prompt指令的最佳实践

前端开发架构师Prompt 提示词可作为系统提示词使用,可基于用户的需求输出对应的编码方案。 本次提示词偏向前端开发的使用,如有需要可适当修改关键词和示例。 推荐使用 Cursor 中作为自定义指令使用Cline 插件中作为自定义指令使用在力所能及的范围内使…

实验5 配置OSPFv2验证

实验5 配置OSPFv2验证 1.实验目的 (1)OSPFv2 验证的类型和意义。 (2)配置基于区域的 OSPFv2 简单口令验证和 MD5 验证的方法。 (3)配置基于链路的 OSPFv2 简单口令验证和 MD5 验证的方法。 2.实验准备 配置…

Repo vs Git:区别与优缺点

repo 和 git 是两个不同的工具,但 repo 是基于 git 之上的 多仓库管理工具,适用于需要管理 多个 Git 仓库的项目。 1. Repo 和 Git 的区别 特性GitRepo作用版本控制系统,用于管理单个代码仓库基于 Git 的多仓库管理工具,适用于大…

Ranger Admin安装MySQL初始化问题解决

个人博客地址:Ranger Admin安装MySQL初始化问题解决 | 一张假钞的真实世界 告警信息及如何解决见我的另外一篇博客:MySQL JDBC连接异常:javax.net.ssl.SSLException: closing inbound before receiving peer’s close_notify 但是Ranger的安…

【异常解决】在idea中提示 hutool 提示 HttpResponse used withoud try-with-resources statement

博主介绍:✌全网粉丝22W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…