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 一开始就是一个面向编写各种系统开放的平台。

相关推荐
寒山李白4 分钟前
Java中高并发线程池的相关面试题详解
java·开发语言·面试·高并发·线程池·多线程
wuhunyu5 分钟前
基于 langchain4j 的简易 MCP Client
后端
幼儿园口算大王7 分钟前
Java是实现大根堆
java·开发语言
高山1117 分钟前
面向对象编程的本质
java·面向对象
Maỿbe8 分钟前
java中的CAS机制
java·线程·进程·cas
想躺平的咸鱼干8 分钟前
RestClient
java·后端·elasticsearch·中间件·intellij-idea
0白露9 分钟前
java的深拷贝与浅拷贝
java·开发语言
用户611847265429 分钟前
C++ 模板编程详解:从基础到元编程
后端
·云扬·27 分钟前
【PmHub面试篇】PmHub中基于Redis加Lua脚本的计数器算法限流实现面试专题解析
redis·面试·lua
天天摸鱼的java工程师42 分钟前
ThreadLocal 内存泄漏场景与解决方案深度剖析
后端