今天面试的时候被问到的一个问题,大致说了几点。回去又研究了一下。

 大致分为几点:

  1:Redis是纯内存数据库,一般都是简单的存取操作,线程占用的时间很多,时间的花费主要集中在IO上,所以读取速度快。

  2:Redis使用的是非阻塞IO,IO多路复用,使用了单线程来轮询描述符,将数据库的开、关、读、写都转换成了事件,减少了线程切换时上下文的切换和竞争。  

  3. Redis采用了单线程的模型,保证了每个操作的原子性,也减少了线程的上下文切换和竞争。

  4. 数据结构也帮了不少忙,Redis全程使用hash结构,读取速度快,还有一些特殊的数据结构,对数据存储进行了优化,如压缩表,对短数据进行压缩存储,再如,跳表,使用有序的数据结构加快读取的速度。

  5:Redis采用自己实现的事件分离器,效率比较高,内部采用非阻塞的执行方式,吞吐能力比较大。

最新文章

  1. 判断终端的js
  2. 桌面显卡天梯图和桌面cpu天梯图
  3. oracle xmltype导入并解析Excel数据 (四)特别说明
  4. 广度优先搜索 cdoevs 1226 倒水问题
  5. 流媒体基础实践之——RTMP直播推流
  6. 前端代码新写法——Zen Coding
  7. 对git认识
  8. Python中的字符串处理
  9. 【转】linux中的cut/tr/join/split/xargs命令
  10. cs ip 通过jmp转移命令间接赋值。无法直接对其赋值。
  11. Eclipse一个打开文件夹目录插件——Open In Explorer
  12. hdu 4407 Sum 容斥+当前离线
  13. android开发_view和view属性
  14. vue2组件懒加载浅析
  15. PMP学习总结(1) -- 引论
  16. Springboot中enable注解
  17. Qt__QMessageBox
  18. linux c学习笔记----线程创建与终止
  19. js获取 gps坐标
  20. git命令图片

热门文章

  1. thinkphp Mongo模型
  2. thinkphp 快捷查询
  3. Docker这个新软件究竟是用来干嘛的???
  4. SpringBoot学习笔记(一):SpringBoot简介
  5. Workman-Thrift疑问解析
  6. Leetcode300. Longest Increasing Subsequence最长上升子序列
  7. [转]Visual Studio 2010单元测试(3)--顺序单元测试
  8. Tuxera ntfs软件如何删除干净
  9. JS--封装JS跳转页面函数
  10. Android SDK上手指南:下一步学习方向