“你对redis的单线程是不是有点误会?
“你对redis 6.0的多线程是不是也有点误会?
“redis多线程一定可以提高性能吗?
redis官方刚刚发布的6.0版本已经掀起了业界一阵热波,在这个版本中新加了很多新特性,如果你打开redis的官网,可以看到6.0现在已经是稳定版本
了。
redis现在已经成为了面试官必问的知识点之一,尤其是当新版本加入了“多线程”概念之后,面试题又是增加了一道难题。
redis单线程
redis在6.0之前的版本,很多同学认为是单线程,其实这个说法严格意义上来讲不太准确。“单线程”是指客户端发送的命令的接收,解析,执行,结果
返回这个过程是由一个线程处理,这个线程就是主线程,这也是redis素有“单线程”定义的来源。
但是,redis也有其他后台线程在处理其他操作,比如那些比较慢,不太适合放主线程执行的操作,例如大key的删除,AOF的重写,快照的生成,无用连接的释放
等。
单线程机制使得redis内部代码实现的复杂度和难度大大降低,请求都是按照串行化的顺序来依次执行,这大大降低了由于线程切换带来的资源消耗,而且又可以避免锁带来的一系列问题。所以平时开发使用redis的时候,我们可以实现分布式锁等一系列骚操作,这和Actor模型中