redis在 6.0 版本之后更新了一些重要的新特性 6.0之前的redis 基本上 是一个单线程的,但并不是指只有一个线程,比如说执行 unlink 操作删除大key的时候( unlink 和 del 命令一样都是用来删除key,但是 unlink 是异步的,适合删除大的key),会有单独的线程完成,不然会阻塞主线程,还有慢的IO操作的时候,也会使用单独的线程完成,还有比如持久化的时候,也是会有单独的线程来实现 6.0之后增加了多线程的实现,多线程使用在io的操作上,工作线程还是只有一个单线程,还是串行实现的,多的io线程用于 读read 或者 写write , 多线程不会同时执行读写操作。所有多出的线程要不是全部用于 读 ,要不全部都是用于 写 。 多线程的配置默认情况下是关闭的,需要通过配置开启 如果本地没有实现 JVM 缓存,那么在大并发的情况下对redis服务器也是一种考验,所以redis提出一种客户端缓存方案 主要实现过程如下图可以根据命令和key来控制访问连接 在redis6之前,只能通过密码来控制,还有通过 rename 来调整高危命令 flushdb , keys* , shutdown 等命令的权限。 redis6之后,提供了更细粒度的权限控制 通过增加设置,在传输的时候使用 SSL 协议,确保传输过程的安全性 当 SSL 模块开启的时候,不能使用多线程 增加 RESP3 同行协议,优化服务端和客户端之间的通信