1. 多线程处理网络请求
redis网络io处理是性能瓶颈,单个主线程处理网络请求的速度跟不上底层网络硬件的速度
6.0采用多个线程来处理网络io提升网络请求处理的并行数 对于读写操作还是使用单线程 当主线程处理完命令之后 将结果写入缓冲区 等待io线程写回socket
所以io线程负责读写socket
io-threads-do-reads yes 需要配置手动开启
io-threads 6 配置线程数 要小于所在实例cpu核心数
2. 客户端缓存
服务端协助的客户端缓存功能 这就有一个问题,当数据被修改了如何通知客户端数据失效了
- 普通模式
在服务端记录客户端读取过的key,当key有修改,服务端给客户端发送invalidate消息 并且只会报告一次
CLIENT TRACKING ON|OFF
- 广播模式
key每次被修改,服务端都会发送广播
3. 细粒度的权限控制
ACL SETUSER normaluser on > abc 创建并启用一个用户 normaluser,把它的密码设置为“abc” ACL SETUSER normaluser +@hash -@string 设置用户 normaluser 只能调用 Hash 类型的命令操作 ACL SETUSER normaluser ~user:* +@all 设置用户 normaluser 只能对以“user:”为前缀的 key 进行命令操作
4.启用RESP3协议