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 是向编写各种系统开放的平台

posted @   半条咸鱼  阅读(135)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示