想必看过来的都是准备刷面试题的
本人也是在一次校招面试中遇到了这个问题,当时也只就把基于内存以及C语言编写答出来了
(TCL是什麽鬼语言,实在是没听说过)
首先列出下面最基本的:
基于内存
C语言开发
ex1:K-V 数据库
熟悉数据结构的人应该知道目前查询时间复杂度较低的数据结构Map(Json数据同理)也是以查询高效被大范围使用
所以其五大数据结构类型均采用K-V形式也是其中的一个要点。
ex2:单线程单进程(此处关联Memcache多核多线程,mongodb多进程单线程,Hbase多线程)
个人认为此处也是考个人有没有准备八股文的分水岭,毕竟只是用的话这玩意也没啥实感。其单线程单进程的特点,无需加锁切换线程之类的多余操作,不仅保证了高效读取,而且最重要的是没有线程干扰问题。(网络请求部分单线程)
此处关联下方redis6.0+多线程情况
ex3:基于IO多路复用机制的线程模型
图来源于https://blog.csdn.net/a745233700/article/details/113488673
具体来说就是开通多个socket通道,通过io多路复用程序进行队列整理,最后由事件分派器进行请求回应处理工作。
ex4:redis6.0以后变成多线程,为什么要采用多线程
减少网络io阻塞(也就是socket这方面的阻塞),充分利用cpu资源以提升性能
ex4.1:会出现线程干扰吗
执行命令的这一部分是单线程的,不会有线程干扰出现。