redis比mysql快的原因

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

而Redis不用这么麻烦,本身就是存储在内存中,会根据数据在内存的位置直接取出。

Redis是基于内存存储的,mysql是基于磁盘存储的

时间复杂度是指执行算法所需要的计算工作量。

Redis存储的是k-v格式的数据。时间复杂度是O(1),常数阶,而MySQL引擎的底层实现是B+Tree,时间复杂度是O(logn),对数阶。Redis会比MySQL快一点点。

Redis是单线程的多路复用IO,单线程避免了线程切换的开销,而多路复用IO避免了IO等待的开销,在多核处理器下提高处理器的使用效率可以对数据进行分区,然后每个处理器处理不同的数据。

首先,我们知道,mysql是持久化存储,存放在磁盘里面,检索的话,会涉及到一定的IO,为了解决这个瓶颈,于是出现了缓存,比如现在用的最多的 memcached(简称mc)。

首先,用户访问mc,如果未命中,就去访问mysql,之后像内存和硬盘一样,把数据复制到mc一部分。

redis和mc都是缓存,并且都是驻留在内存中运行的,这大大提升了高数据量web访问的访问速度。然而mc只是提供了简单的数据结构。

比如 string存储;redis却提供了大量的数据结构,比如string、list、set、hashset、sorted set这些,这使得用户方便了好多,毕竟封装了一层实用的功能,同时实现了同样的效果,当然用redis而慢慢舍弃mc。

内存和硬盘的关系,硬盘放置主体数据用于持久化存储,而内存则是当前运行的那部分数据,CPU访问内存而不是磁盘,这大大提升了运行的速度,当然这是基于程序的局部化访问原理。

推理到redis+mysql,它是内存+磁盘关系的一个映射,mysql放在磁盘,redis放在内存,这样的话,web应用每次只访问redis,如果没有找到的数据,才去访问Mysql。

四、redis比mysql快的原因相关推荐

  1. Redis单线程还快的原因

    Redis单线程还快的原因 Redis Server是多线程的,Redis单线程指的是请求处理整个流程是单线程的! 单线程还快的原因 纯内存操作: Redis数据存储在内存中,速度很快. 非阻塞IO多 ...

  2. Redis 为什么这么快

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

  3. 浅谈单线程的Redis快的原因是什么

    前言 我们都知道Redis很快,我们还总是听别人说Redis是单线程的,那么单线程的Redis为什么那么快呢? 1. Redis单线程的本质 其实,Redis并不是单线程,我们之所以会一直称Redis ...

  4. Day269.口罩预约抢购系统关注的问题、瞬时高流量Mysql查询缓慢原因 -Redis的高并发预约抢购系统

    一.口罩预约抢购系统关注的问题 1.瞬时高流量sku缺乏监控会出现的问题 流量监控问题 如果不是值班人员细心,自己肉眼发现了这个预约SKU的涨幅不正常. 万一稍有疏忽没有观察到流量的异常,一旦到了抢购 ...

  5. 为啥Redis/Mongo这么快,就不能直接替代mysql吗?

    redis.mongodb等nosql数据库是当今互联网中首选缓存中间件,nosql数据库读取速度快,能够大大的提高运行效率.但是nosql数据库耗内存,对事务支持不够完善. mysql是关系型数据库 ...

  6. 使用redis和mysql的开源项目_干货!带你了解为什么那么多开源项目都是用Redis!...

    很多开源项目中都使用了redis,这些项目为什么使用redis?使用redis有什么好处?怎么使用redis?带着这些疑问,我们来了解一下redis. 一.什么是Redis Redis是一个免费开源用 ...

  7. 只用redis不用mysql的项目_干货!带你了解为什么那么多开源项目都是用Redis!

    很多开源项目中都使用了redis,这些项目为什么使用redis?使用redis有什么好处?怎么使用redis?带着这些疑问,我们来了解一下redis. 一.什么是Redis Redis是一个免费开源用 ...

  8. Redis为什么这么快?

    Redis为什么这么快? 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的系列文章. 前言 说起当前主流NoSql数据库非 ...

  9. 常见面试问题1:ZooKeeper、Redis、Mysql、JVM、Spring、Dubbo

    面试问题整理 ZooKeeper CAP定理: 一个分布式系统不可能同时满足以下三种,一致性(C:Consistency),可用性(A:Available),分区容错性(P:Partition Tol ...

最新文章

  1. go build 编译报错 missing go.sum entry for module providing package
  2. C# 垃圾回收机制(转)
  3. python基础常用语句-Python基础6—常用语句
  4. 《Python参考手册(第4版•修订版)》——1.4 文件输入和输出
  5. 在Selenium中按TagName定位元素
  6. JavaScript-Map和Set
  7. 这操作厉害:怎么样发布你的 Python模块给别人 “pip install”
  8. C#IList与List区别
  9. 并发编程-concurrent指南-原子操作类-AtomicInteger
  10. Java学习之json篇——json介绍
  11. 魔术命令python_魔术命令_利用Python进行数据分析_红黑联盟读书频道
  12. IT行业就业前景如何
  13. 学习编程的方法、软件和工具
  14. Android数据库备份和恢复
  15. AD画PCB遇到器件之间无法连接设置
  16. 三:OpenCV图片颜色通道数据转换
  17. Java语言程序设计与数据结构(基础篇)梁勇第一章书中例题
  18. zemax模拟ld_使用ZEMAX 序列模式模拟激光二极管光源
  19. 相比DCMM,DMBOK为什么没有数据标准?
  20. EIA-CEA-861-D协议分享(免费)

热门文章

  1. mysql8.0远程linux_【Linux】【mysql】mysql8.0开启远程访问及常见问题
  2. etcd 指定配置文件启动_5步完成 etcd 单机集群部署
  3. win10 连接android,win10系统连接安卓手机usb没反应的解决方法
  4. java 导出word_Java 生成Word文档
  5. 质数c语言欧拉筛选,Python|欧拉筛法求质数
  6. 并发模拟的四种方式 + 工具,超级实用!
  7. 如何维持整洁的 Git 提交记录?送你三个锦囊!
  8. 我是如何做到的:不切换 Git 分支,同时在多个分支上工作的?
  9. 每日一皮:强大的sudo ...
  10. 后端开发必知必学的 Linux 命令行大全