Redis 6.0新特性详解

Redis 6.0新特性主要有3个:多线程、Client Side Cache、Acls。下面详细说明一下。

1.多线程

redis 6.0 提供了多线程的支持,redis 6 以前的版本,严格来说也是多线程,只不过执行用户命令的请求时单线程模型,还有一些线程用来执行后台任务, 比如 unlink 删除 大key,rdb持久化等。

redis 6.0 提供了多线程的读写IO, 但是最终执行用户命令的线程依然是单线程的,这样,就没有多线程数据的竞争关系,依然很高效。

redis 6.0 以前线程执行模式,如下操作在一个线程中执行完成
在这里插入图片描述
redis 6.0 线程执行模式:

可以通过如下参数配置多线程模型:

如:

io-threads 4  // 这里说 有三个IO 线程,还有一个线程是main线程,main线程负责IO读写和命令执行操作

默认情况下,如上配置,有三个IO线程, 这三个IO线程只会执行 IO中的write 操作,也就是说,read 和 命令执行 都由main线程执行。最后多线程将数据写回到客户端。

在这里插入图片描述
开启了如下参数:

io-threads-do-reads yes // 将支持IO线程执行 读写任务。

在这里插入图片描述

2.client side caching

客户端缓存:redis 6 提供了服务端追踪key的变化,客户端缓存数据的特性,这需要客户端实现

在这里插入图片描述
执行流程为, 当客户端访问某个key时,服务端将记录key 和 client ,客户端拿到数据后,进行客户端缓存,这时,当key再次被访问时,key将被直接返回,避免了与redis 服务器的再次交互,节省服务端资源,当数据被其他请求修改时,服务端将主动通知客户端失效的key,客户端进行本地失效,下次请求时,重新获取最新数据。

目前只有lettuce对其进行了支持:

<dependency>
   <groupId>io.lettuce</groupId>
   <artifactId>lettuce-core</artifactId>
   <version>6.0.0.RELEASE</version>
</dependency>
public static void main(String[] args) throws InterruptedException {
    RedisClient redisClient = RedisClient.create("redis://192.168.109.200");

    Map<String, String> clientCache = new ConcurrentHashMap<>();

    StatefulRedisConnection<String, String> myself = redisClient.connect();

    CacheFrontend<String, String> frontend =
            ClientSideCaching.enable(CacheAccessor.forMap(clientCache),
            myself,
            TrackingArgs.Builder.enabled().noloop());

    String key="csk";
    int count = 0;
    while (true){

        System.out.println(frontend.get(key));
        TimeUnit.SECONDS.sleep(3);
        if (count++ == Integer.MAX_VALUE){
            myself.close();
            redisClient.shutdown();
        }
    }
}

3.ACL

ACL 是对于命令的访问和执行权限的控制,默认情况下,可以有执行任意的指令,兼容以前版本

ACL设置有两种方式:

  • 命令方式: ACL SETUSER + 具体的权限规则, 通过 ACL SAVE 进行持久化
  • 对 ACL 配置文件进行编写,并且执行 ACL LOAD 进行加载

ACL存储有两种方式,但是两种方式不能同时配置,否则直接报错退出进程

  • redis 配置文件: redis.conf
  • ACL配置文件, 在redis.conf 中通过 aclfile /path 配置acl文件的路径

命令方式:

ACL SETUSER alice   // 创建一个 用户名为 alice的用户

用如上的命令创建的用户语义为:

  • 处于 off 状态, 它是被禁用的,不能用auth进行认证
  • 不能访问任何命令
  • 不能访问任意的key
  • 没有密码

如上用户alice 没有任何意义。

创建一个对 cached: 前缀具有get命令执行权限的用户,并且设置密码:

acl setuser alice on >pass123  ~cached:* +get
auth alice pass123
set a a
(error) NOPERM this user has no permissions to run the 'set' command or its subcommand
get a a 
(error) NOPERM this user has no permissions to access one of the keys used as arguments
get cached:name
vvv

如上,如果访问没有被授权的命令,或者key, 将报错,set 命令没有被授权, key a 没有被授权,cached:name 可以通过验证。

更符合阅读习惯的格式

ACL GETUSER alice

添加多个访问模式,空格分隔, 注意,切换其他用户进行登录,alice没有admin权限:

ACL SETUSER alice on +@all -@dangerous >密码 ~*

这里+@all: 包含所有得命令 然后用-@ 去除在redis command table 中定义的 dangerous 命令:
在这里插入图片描述
可以通过如下命令进行查看具体有哪些命令属于某个类别:

acl cat // 查看所有类别
acl cat dangerous // 查看所有的 dangerous 命令

开放子命令:

ACL SETUSER myuser -client +client|setname +client|getname

禁用client 命令,但是开放 client 命令中的子命令 setname 和 getname ,只能是先禁用,后追加子命令,因为后续可能会有新的命令增加。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/720683.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Axure高保真原型】动态统计中继器表格项目数

今天和大家分享动态统计中继器表格项目数的原型模板&#xff0c;具体包括以下功能&#xff1a; 表格下方可以自动根据表格内容统计表格的总项目数、启用和禁用数、选中和未选中数 我们可以点击开发切换启用和禁用 点击多选按钮&#xff0c;选中或取消选中对应行内容 选中后可…

跨境电商源码支持,多国语言与货币切换功能全解析

一、背景介绍 跨境电商的兴起&#xff0c;使得供货商和代理商们面临着一个全新的挑战&#xff1a;如何管理跨国交易和多语言 的销售平台。为了解决这一问题&#xff0c;跨境电商源码应运而生。本文将全面解析供货商和代理商后 台所具备的跨境电商源码支持功能&…

环境搭建---nginx

nginx离线安装 下载地址&#xff1a;https://nginx.org/download/ 一、安装编译工具及库文件 [rootVM-20-14-centos ~]# yum -y install make zlib zlib-devel gcc-c libtool openssl openssl-devel二、安装 PCRE [rootVM-20-14-centos ~]# tar -zxvf pcre-8.35.tar.gz [r…

从热潮到理性,大模型迎来产业「拐点」

前言 无人不谈大模型&#xff0c;是今年上半年科技界的真实写照。 从市场热闹程度来看&#xff0c;大模型已经成为各家科技厂商争先涌入的赛道&#xff0c;无论是互联网巨头&#xff0c;还是科技公司&#xff0c;甚至是研究机构&#xff0c;均已加入这场大模型混战&#xff0…

k8s快速上手实操

前言 Kubernetes&#xff08;简称K8s&#xff09;是由Google开源的一个用于自动化部署、扩展和管理容器化应用程序的系统。自2014年发布以来&#xff0c;Kubernetes已经迅速成长为容器编排领域的标准&#xff0c;并在全球范围内得到了广泛的采用和认可。 Kubernetes作为现代容…

彩色图像批处理实例

在数字图像处理过程中&#xff0c;经常需要对一批图像进行处理&#xff0c;下面以自然场景下花背景分割为例&#xff0c;给出其主要处理过程和处理结果。 处理的主要步骤&#xff1a;1. 六张彩色图像存放在flower文件夹中&#xff0c;图像文件名为1.jpg 2.jpg 3.jpg 4.jpg 5.j…

同三维T80006EHL-4K30CN 单路4K30 HDMI编码器(全国产化)

同三维T80006EHL-4K30CN 单路4K30 HDMI编码器 带1路HDMI环出和1路3.5音频输入&#xff0c;支持4K30&#xff0c;所有元器件全国产 一、 产品简介&#xff1a; T80006EHL-4K30CN 4K编码器&#xff08;采集盒&#xff09;是一款全国产化的专业4K HDMI音视频编码产品&#xff0c;…

开始报名啦!智能可观测运维技术 MeetUp 议题硬核来袭

「龙蜥社区“走进系列”MeetUp」是由龙蜥社区与生态合作伙伴联合主办的系列月度活动&#xff0c;每期走进一家企业&#xff0c;聚焦龙蜥社区和合作伙伴的技术、产品和创新动态&#xff0c;展示硬核技术&#xff0c;共建繁荣生态。 龙蜥社区“走进系列”第 11 期走进中兴通讯-智…

文字转语音在线怎么转?总结了三种快速转换

文字转语音在线怎么转&#xff1f;在数字化信息爆炸的时代&#xff0c;文字转语音的操作也越来越多。无论是为了制作视频配音、播客节目&#xff0c;还是为了方便视力障碍者阅读&#xff0c;文字转语音技术都提供了极大的便利。因此&#xff0c;本文将总结三种文字转语音的在线…

Python热涨落流体力学求解算法和英伟达人工智能核评估模型

&#x1f3af;要点 &#x1f3af;平流扩散简单离散微分算子 | &#x1f3af;相场模拟&#xff1a;简单旋节线分解、枝晶凝固的 | &#x1f3af;求解二维波动方程&#xff0c;离散化时间导数 &#x1f3af;英伟达 A100 人工智能核性能评估模型 | &#x1f3af;热涨落流体动力学…

时隔一年,SSD大涨价?

同样产品&#xff0c;2T&#xff0c;去年400多到手&#xff0c;今年700。 去年 今年

win10重装系统如何操作,附上详细系统重装图文教程(2024年新)

win10重装系统如何操作呢&#xff1f;电脑使用时间长了&#xff0c;会出现各种各样的问题&#xff0c;如重要的系统文件被删除导致电脑无法正常运行&#xff0c;电脑运行内存空间不足&#xff0c;电脑卡顿等。Win10重装系统很简单&#xff0c;这里分享超详细的重装系统方法&…

红日靶场实战一 - 学习笔记

最近在学习红蓝对抗&#xff0c;如果有兴趣的可以多关注。 目录 环境搭建 靶场链接 配置网络 攻击机kali网络 配置win7 web服务器网络 配置winserver 2008网络&#xff08;DC域控&#xff09; 配置win2003/win2k3网路(域成员) IP配置情况 外网突破 信息收集 phpmya…

等待 chrome.storage.local.get() 完成

chrome.storage.local.get() 获取存储处理并计数&#xff0c;内部计数正常&#xff0c;外部使用始终为0&#xff0c;百思不得其解。 如何在继续执行之前等待异步chrome.storage.local.get()完成-腾讯云开发者社区-腾讯云 (tencent.com) 原来我忽略了异步问题&#xff0c;最简…

第二十二篇——香农第二定律(一):为什么你的网页总是打不开?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 看似在将知识&#xff0c;实际是在讲生活和所有&#xff1b;突破边界偶尔…

lotus snapshot 快照列表

快照列表 https://forest-archive.chainsafe.dev/list/mainnet/latest

阿赵UE引擎C++编程学习笔记——C++自定义蓝图函数

大家好&#xff0c;我是阿赵。   使用UE引擎&#xff0c;大部分功能都可以使用蓝图的自带节点去完成。但有时候我们也需要扩展一些蓝图没有的功能。这一篇主要学习一下怎样用C给蓝图新增自定义的函数节点。 一、 新建蓝图函数库 在添加C类的时候&#xff0c;选择蓝图函数库&…

【神经网络】图像的数字视角

文章目录 图像的数字视角引言直观感受内在剖析图像常用函数图像三维层次 经验总结 图像的数字视角 引言 在机器视觉和目标识别领域&#xff0c;需要处理的对象都是图像&#xff0c;但这些领域的模型都是针对数值进行训练的&#xff0c;那么图像和数值之间是什么关系呢?答案是…

随机产生一些江河上的坐标数据

不久前收到一个需求&#xff0c;说要随机创建约一百个某段江河上的坐标点&#xff0c;用于做一些数据呈现。 我首先是想到用AI直接给我一点数据&#xff0c;没想到给出来的坐标&#xff0c;有许多都落在陆地上&#xff0c;根本不符合我的要求。后来结合AI给出的建议&#xff0…

基于Pytorch框架的深度学习ConvNext神经网络宠物猫识别分类系统源码

第一步&#xff1a;准备数据 12种宠物猫类数据&#xff1a;self.class_indict ["阿比西尼猫", "豹猫", "伯曼猫", "孟买猫", "英国短毛猫", "埃及猫", "缅因猫", "波斯猫", "布偶猫&q…