Redis新功能

Redis 新功能

ACL

参考官网:redis.io/topics/acl

基本介绍

1、Redis ACL 是Access Control List(访问控制列表)的缩写,该功能根据可以执行的命令和可以访问的键来限制某些连接

2、在Redis 5 版本之前,Redis 安全规则只有密码控制还有通过rename 来调整高危命令比如flushdb , KEYS* , shutdown 等

Redis 6 则提供ACL 的功能对用户进行更细粒度的权限控制:

  • 接入权限:用户名和密码

  • 可以执行的命令

  • 可以操作的KEY

常用指令

acl cat 命令

  1. 查看添加权限指令类别
  1. 带上参数类型名, 可以查看该类型可以执行的指令
  1. acl whoami 命令查看当前用户

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

  1. ACL 规则说明
  1. 通过命令创建新用户默认权限
  • 在上面的示例中,没有指定规则

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

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

  1. 设置有用户名、密码、ACL 权限、并启用的用户

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

jack: 用户名

on : 表示启用

password : 表示密码就是password 这个可以自己指定

~cached:* : 表示操作的key 是以cached: 开头的 这个可以自己指定

+get : 表示操作的指令只能是get 这个也可以自己决定权限

  1. 切换用户,验证权限

给jack 用户增加权限

IO 多线程

简介

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

原理架构

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

多线程IO 默认也是不开启的

需要再配置文件redis.conf 中配置

io-threads-do-reads yes

io-threads 4

工具支持Cluster

介绍

  1. 之前老版Redis 想要搭集群需要单独安装ruby 环境
  2. Redis 5 将redis-trib.rb 的功能集成到redis-cli
  3. 另外官方redis-benchmark 工具开始支持cluster 模式了, 通过多线程的方式对多个分片进行压测

查看-如图

其它新功能-介绍

1、RESP3

新的Redis 通信协议:优化服务端与客户端之间通信

2、Client side caching 客户端缓存:

基于RESP3 协议实现的客户端缓存功能。为了进一步提升缓存的性能,将客户端经常访问的数据cache 到客户端。减少TCP 网络交互

3、Proxy 集群代理模式:

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

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

相关推荐
书源丶16 分钟前
三十六、File 类与 IO 流基础——文件操作的「第一步」
java
刀法如飞22 分钟前
Go数组去重的20种实现方式,AI时代解决问题的不同思路
后端·算法·go
AI人工智能+电脑小能手1 小时前
【大白话说Java面试题】【Java基础篇】第30题:JDK动态代理和CGLIB动态代理有什么区别
java·开发语言·后端·面试·代理模式
swipe1 小时前
别再把 AI 聊天做成纯文本:从 agui 这个前后端项目,拆解“可感知工具调用”的流式 AI UI
后端·langchain·llm
GetcharZp1 小时前
GitHub 爆火!纯 Go 编写的文件同步神器 Syncthing,凭什么成为程序员的标配?
后端
hERS EOUS1 小时前
SpringBoot 使用 spring.profiles.active 来区分不同环境配置
spring boot·后端·spring
DFT计算杂谈1 小时前
wannier90 参数详解大全
java·前端·css·html·css3
LucianaiB1 小时前
我用飞书多维表做了一个 AI 活动推荐智能体:每天自动催我别错过截止日期!
后端
marsh02061 小时前
43 openclaw熔断与降级:保障系统在异常情况下的可用性
java·运维·网络·ai·编程·技术
张健11564096481 小时前
临界区和同一线程上锁
java·开发语言·jvm