前言


相信大家在面试过程中,都被面试官问到过这样一个问题,缓存中间件大名鼎鼎的 redis 速度为什么这么快呢?

针对于面试过程中的痛点问题,笔者昨晚熬夜收集资料,并且通过走访大量使用者,整理出如下的结论。我敢保证,你看了这篇文章,再问你这个问题,保准把面试官虐哭。

分析原因


这里就不卖关子了,先说结论,我们再对原因进行抽丝剥茧。

redis快的原因

  1. 纯内存操作(最主要条件)
  2. 合适的线程模型
  3. 优秀的数据结构
  4. 合理的数据编码方式

纯内存操作(最主要条件)


首先最主要的原因一定是:redis 的数据操作是基于内存的

众所周知,内存的访问速度是远远大于硬盘访问速度的。我们来做个对比,拿数据库(硬盘)和 redis (内存)对比,一个操作对应磁盘,一个操作对应内存。他们两个的的访问速度差了一个数量级。

可能大家对数量级没有什么该概念。那可是整整 1000 倍啊!现在大家知道了吧。
下面是我精心为大家准备的访问速度图,已经验证,方便大家食用。

有的小伙伴要问了,redis不是有数据持久化吗?
怎么会是只操作内存呢?

这位同学一看就是对 redis 理解的不够透彻,redis 持久化线程和操作内存数据的线程,并不是一个线程,我们这里说的 redis 快,只是针对操作内存的线程来说的,操作很快。因为操作是直接客户端响应时间息息相关的。

合适的线程模型


redis 为什么这么快,你真的知道吗?相关推荐

  1. redis 所有模糊key 查询_写完这篇Redis由浅入深剖析快自闭了!

    前言 常用的SQL数据库的数据都是存在磁盘中的,虽然在数据库底层也做了对应的缓存来减少数据库的IO压力,但由于数据库的缓存一般是针对查询的内容,而且粒度也比较小,一般只有表中的数据没有发生变动的时候, ...

  2. 思考:Redis为什么这么快?

    注:本篇小短文,随心而发,属于笔者自己的一个技术思考吧. 请看到这句话的朋友慎重,是否真的考虑阅读下去,因为不一定能给您带来帮助.但是您不惜浪费时间读完,我希望真的能引起你一点点思考,并且给您带来一定 ...

  3. Redis 为什么这么快? Redis 的有序集合 zset 的底层实现原理是什么? —— 跳跃表 skiplist

    Redis有序集合 zset 的底层实现--跳跃表skiplist Redis简介 Redis是一个开源的内存中的数据结构存储系统,它可以用作:数据库.缓存和消息中间件. 它支持多种类型的数据结构,如 ...

  4. 面霸:Redis 为什么这么快?

    以下文章来源方志朋的博客,回复"666"获面试宝典 Redis 为什么这么快? 很多人只知道是 K/V NoSQl 内存数据库,单线程--这都是没有全面理解 Redis 导致无法继 ...

  5. 硬核!15张图解Redis为什么这么快

    作者|莱乌 作为一名服务端工程师,工作中你肯定和 Redis 打过交道.Redis 为什么快,这点想必你也知道,至少为了面试也做过准备.很多人知道 Redis 快仅仅因为它是基于内存实现的,对于其它原 ...

  6. socket什么意思_浅析Redis为什么这么快

    Redis作为一种Key-Value形式的NoSQL,因其极高的读写速度深受开发者喜爱,在web.分布式等领域有非常广泛的应用. 根据runoob的介绍, Redis能读的速度是110000次/s,写 ...

  7. 四、redis比mysql快的原因

    redis比mysql快的原因 Mysql数据存储是存储在表中,查找数据时要先对表进行全局扫描或者根据索引查找,这涉及到磁盘的查找,磁盘查找如果是按条点查找可能会快点,但是顺序查找就比较慢: 而Red ...

  8. 02 | 高性能 IO 模型:为什么单线程 Redis 能那么快?

    我们通常说,Redis 是单线程,主要是指Redis 的网络 IO和键值对读写是由一个线程来完成的,这也是 Redis 对外提供键值存储服务的主要流程.但 Redis 的其他功能,比如持久化.异步删除 ...

  9. Redis 为什么这么快

    不管你是从事 Python.Java.Go 语言,还是 PHP.Ruby 等等- Redis 都是你应该掌握的中间件之一. Redis 是一个开源的底层使用 C 语言编写的 Key-Value 存储数 ...

  10. linux redis客户端_为什么单线程Redis能那么快?

    我们通常说,Redis 是单线程,主要是指 Redis 的网络 IO 和键值对读写是由一个线程来完成的,这也是 Redis 对外提供键值存储服务的主要流程.但 Redis 的其他功能,比如持久化.异步 ...

最新文章

  1. tensorflow算法实战:普通的数据训练和迁移学习之后的数据训练进行图像的识别(包括前端页面)
  2. C#对象XML序列化(一):序列化方法和常用特性
  3. 《集体智慧编程》笔记(2 / 12):提供推荐
  4. 软件测试和python那个号_软件测试:Java VS Python
  5. selenium 基于浏览器驱动测试
  6. mysql 备份_shell脚本实现MySQL全量备份+异地备份
  7. 大数据面试-02-大数据工程师面试题
  8. HDU1160 FatMouse's Speed —— DP
  9. 存储过程和transaction
  10. LCS(HDU_5495 循环节)
  11. Java并发编程:Lock(上)
  12. 网易云音乐网站音乐下载
  13. QRCode.js生成二维码
  14. 苹果6更换电池注意事项
  15. Player 本地播放器推荐-倍速播放-本地视频播放器-播放器-电脑手机互传文件-附下载地址
  16. 生成身份证校验码(c语言)
  17. 《时间的秩序》-- 卡洛.罗韦利
  18. 面向Android的开发基于Tensorflow Lite框架深度学习的应用(一)
  19. 前端零基础入门_000_前言
  20. 武汉星起航跨境电商到底靠不靠谱?亚马逊跨境收款方式有哪些?

热门文章

  1. 从一文中了解SSRF的各种绕过姿势及攻击思路
  2. 批量删除时传参的转换
  3. 两输入单输出的模糊控制器
  4. “不务正业”斗地主?AI青年查道琛想做“被人看到”的研究
  5. 如何利用Pycharm将工程文件上传到服务器
  6. 数据可视化教程作业打卡-第四回:文字图例尽眉目
  7. 【C语言】do-while()循环
  8. 基于SSM+MYSQL写的javaWeb房屋租赁管理系统,包括系统前端和后台,页面美观,功能完善,非常高端的SSM源码
  9. asp毕业设计——基于asp+access的电子政务档案管理系统设计与实现(毕业论文+程序源码)——电子政务档案管理系统
  10. 使用Layui制作界面及功能