Redis 6
ACL
1、Access Control List:访问控制列表
2、在 Redis 5 之前,安全规则只有密码控制、rename 调整高危命令(flushdb、keys * 、shutdown 等)
3、Redis 6 提供 ACL 功能对用户进行更细粒度的权限控制
(1)接入权限:用户名和密码
(2)可以执行的命令
(3)可以操作的 KEY
4、ACL 规则
类型 |
参数 |
说明 |
启动和禁用用户 |
on |
激活某用户账号 |
off |
禁用某用户账号。注意,已验证的连接仍然可以工作。如果默认用户被标记为 off,则新连接将在未进行身份验证的情况下启动,并要求用户使用 AUTH选项发送 AUTH 或 HELLO,以便以某种方式进行身份验证。 |
|
权限的添加删除 |
+<command> |
将指令添加到用户可以调用的指令列表中 |
-<command> |
从用户可执行指令列表移除指令 |
|
+@<category> |
添加该类别中用户要调用的所有指令,有效类别为@admin、@set、@sortedset 等,通过调用 ACL CAT 命令查看完整列表。特殊类别 @all 表示所有命令,包括当前存在于服务器中的命令,以及将来将通过模块加载的命令。 |
|
-@<actegory> |
从用户可调用指令中移除类别 |
|
allcommands |
+@all的别名 |
|
nocommand |
-@all的别名 |
|
可操作键的添加或删除 |
~<pattern> |
添加可作为用户可操作的键的模式。例如 ~* 允许所有的键 |
I/O 多线程
1、客户端交互部分中的网络 I/O 交互处理模块多线程,而非执行命令多线程,Redis 6 执行命令仍是单线程
2、原理架构
(1)多线程只处理网络数据的读写、协议解析,执行命令仍然是单线程
(2)不因多线程而变得复杂,需要去控制并发
(3)整体大体设计
THREADED I/O
1、配置多线程 I/O 数量
# io-threads 4
(1)建议至少有 4 个或更多内核的机器上启用它,并留下至少一个备用内核,使用 8 个以上的线程不太可能有什么帮助
(2)建议只有在确实有性能问题时,才使用线程 I/O,Redis 实例能够使用相当大比例 CPU 时间,否则使用这个功能就没有意义
(3)例如:4 核 CPU,尽量使用 2 或 3 个 I/O 线程;8 核 CPU,尽量使用 6 个线程
(4)io-threads 设置为 1,只使用主线程
2、启用读取、协议解析的线程
# io-threads-do-reads no
(1)默认情况下,禁用多线程 I/O
(2)当启用多线程 I/O时,只使用线程进行写入,即对 write(2) 系统调用进行线程化,并将客户端的缓冲区传输到 Socket
(3)通常情况下,线程读取并没有什么帮助
(4)这个配置指令在运行时,不能通过 CONFIG SET 来改变,同样,这个功能目前在启用 SSL 时也不起作用
工具支持 Cluster
1、旧版 Redis 搭建集群,需要单独安装 Ruby 环境
2、Redis 5 将 redis-trib.rb 功能集成到 redis-cli
3、官方 redis-benchmark 工具开始支持 cluster 模式,通过多线程的方式对多个分片进行压测
RESP3
1、新的 Redis 通信协议
2、优化服务端与客户端之间通信
Client-side caching
1、客户端缓存
2、基于 RESP3 协议实现的客户端缓存功能
3、进一步提升缓存的性能,将客户端经常访问的数据 cache 到客户端,减少 TCP 网络交互
Proxy 集群代理模式
1、Proxy 使 Cluster 拥有像单实例一样的接入方式,降低使用 cluster 门槛
2、注意:代理不改变 Cluster 的功能限制,不支持的命令还是不会支持,比如跨 slot 的多 key 操作
Modules API
1、Redis 可以变成一个框架,利用 Modules 来构建不同系统,而不需要从头开始编写,还要 BSD 许可
2、Redis 是向编写各种系统开放的平台
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战