十四. 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. Java反编译器剖析

    本文由 ImportNew - 邬柏 翻译自 javacodegeeks.如需转载本文,请先参见文章末尾处的转载要求. Importnew注:如果你也对Java技术翻译分享感兴趣,欢迎加入我们的Jav ...

  2. 使用Nginx搭建流媒体服务器

    目录 什么是流媒体服务器 Nginx如何实现流媒体服务器 为Nginx安装nginx-http-flv-module 概述 流程 操作步骤 配置流媒体服务器 使用OBS推流 使用VLC拉RTMP 使用 ...

  3. cento 申请ssl证书笔记

    如果您的Certbot工具没有内置的Nginx插件,您可以尝试以下方法来申请证书并配置Nginx服务器: 安装Certbot的Nginx插件: sudo yum install certbot-ngi ...

  4. 奇奇怪怪的编程语言:Malbolge

    Malbolge 除了我们日常使用的Python.Java.C等主流编程语言外,还存在这么一类极为晦涩难懂的编程语言,被称为深奥的编程语言(Esoteric programming language, ...

  5. Swagger 调试,我不想再复制粘贴token啦~

    作为后端开发,进行Web Api 调试,除了使用 Postman, Apifox 等 Web Api 调试工具之外,我想使用Swagger进行调试应该是更方便,更常用的方式了吧. 那么在需要 toke ...

  6. 聊一聊坑人的 C# MySql.Data SDK

    一:背景 1. 讲故事 为什么说这东西比较坑人呢?是因为最近一个月接到了两个dump,都反应程序卡死无响应,最后分析下来是因为线程饥饿导致,那什么原因导致的线程饥饿呢?进一步分析发现罪魁祸首是 MyS ...

  7. csrf跨站请求伪造与校验策略

    目录 一.csrf跨站请求伪造 概念引入 概念讲解 二.csrf校验策略 概念讲解 form表单操作csrf策略 ajax请求csrf策略 三.csrf相关装饰器 一.csrf跨站请求伪造 概念引入 ...

  8. metasploit模块

    模块类型 辅助模块(Auxiliary) 渗透攻击模块(Exploits) 后渗透攻击模块(Post) 攻击载荷模块(Payloads) 空指令模块(Nops) 编码器模块(Encoders) 后渗透 ...

  9. 【前端】【H5 API】实现全屏显示功能

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. 【转载】 SpringBoot声明式事务的简单运用

    https://blog.csdn.net/justry_deng/article/details/80828180 关于事物的基本概念等这里就不介绍了. Spring声明式事物的实现,有两种方式:第 ...