redis 和Mysql 的一些 区别[通俗易懂]

redis 和Mysql 的一些 区别[通俗易懂]说Redis的缓存机制实现之前,我想先回顾一下mysqlmysql存储在哪儿呢?以windows为例,mysql的表和数据,存储在data目录下frmibd后缀的文件中mysql存储在机器/服务器的硬盘中所以mysql读写数据都需要从磁盘读取。磁盘的容量,带宽的大小就影响了网站的访问速度,读取的方式,也就是sql语句,次数和效率也会影…

大家好,又见面了,我是你们的朋友全栈君。

Redis 的缓存机制实现之前,我想先回顾一下 mysql

redis 和Mysql 的一些 区别[通俗易懂]

mysql 存储在哪儿呢?

windows 为例,mysql 的表和数据,存储在data 目录下frm ibd 后缀的文件中

mysql存储在机器/服务器的 硬盘中

所以 mysql 读写数据都需要从磁盘读取 。磁盘的容量,带宽的大小就影响了网站的访问速度,读取的方式,也就是 sql 语句,次数和效率也会影响读取效率。

当访问量和并发很大的时候,mysql 就撑不住了,据统计,mysql的连接池并发数max为 500-1000

这时,我们可以通过 慢查询优化cdn ,页面静态化, nginx 负载均衡策略 ,甚至 分布式数据库 来进行 sql优化 ,当然也可以使用 高速缓存,比如 redis


redis 和Mysql 的一些 区别[通俗易懂]

Redis - 高并发,内存高速cache ,处理读写io的高并发容忍。

redis 通常被使用来将那些经常被访问的内容缓存在内存中。

很多人谈到redis ,哦,k-v 存储数据库啊, 速度快啊!为什么快啊? 人家存内存啊,能不快吗?关键人家还支持复杂的数据结构,list 什么的,很多高并发场景都可以使用。 比如:电商秒杀场景的解决策略与具体原理

remote dictionary server (远程数据服务) 内存高速缓存数据库 数据模型为 k-v 也就是redis 的一种最经常使用的数据类型 string

k-v 的算法时间复杂度 可是 0(1) 而mysql 的查询是基于表关联技术 ,这就是nosql的优势所在。

附上redis 和memcahe 的比较

  1. Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  2. Redis支持master-slave(主-从)模式应用,高可用的cache系统,支持集群服务器之间数据同步。

  3. Redis支持数据持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。

  4. Redis单个value的最大限制是1GB,(k-v),memcached只能保存1MB的数据。(k:250kb v:1mb)

redis 比sql 到底快多少呢?
1 从存储媒介来看,内存比磁盘的读取速度 hash查找是100w/s 的数量级

2 多路复用io (todo)


redis 和mysql 绝对不是竞争的关系,就好像你拿485和86去秋名山飙车,他们应该是一对好基友,在工作中合理运用两者才能达到更好的效果。

这里写图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148886.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • matlab逆变器仿真程序,PWM逆变器Matlab仿真「建议收藏」

    matlab逆变器仿真程序,PWM逆变器Matlab仿真「建议收藏」PWM逆变器Matlab仿真摘要在本设计中,首先,针对课设题目要求,进行了系统的总体方案选择,以及各功能模块的方案论证和选择。选择通过升压斩波电路将输入直流电压升高,再利用全桥逆变方式将直流电转换成50HZ的交流电,控制部分采用PWM斩波控制技术。接着,对各功能模块进行了详细的原理分析和电路设计,同时也对可能出现的直流不平衡等问题进行了考虑。并最终通过MATLAB来实现PWM逆变器…

    2022年5月27日
    32
  • workbench mesh搅拌釜网格划分

    workbench mesh搅拌釜网格划分首先在scdm中创建几何模型导入workbenchmesh中进行划分,导出为msh格式网格即可单击mesh,调整参数,比如修改physics为CFD等 选中geometry第二个body,右击选择suppressbody,此时只剩下一个body 右击mesh,选择insertmethod,选择几何,选择默认参数 单击generatemesh,生成网格 单击第…

    2022年5月25日
    79
  • linux发包工具igmp_jar打包命令

    linux发包工具igmp_jar打包命令1.pktgen简介:pktgen是Linux内核里包含的一个高性能发包工具,主要用来测试网络性能。一般情况下,使用pktgen就可以满足千兆网卡的测试需要,不必花钱购买昂贵的硬件发包设备。pktgen运行在“内核态”,并不占用太多的系统资源,就可以达到非常高的发包速率。pktgen只支持UDP发包(端口9)。因为pktgen是一个非常底层测试工具,而且一般是测试网络设备的…

    2025年9月21日
    8
  • 771性价比最高cpu_e5 2660相当于什么cpu

    771性价比最高cpu_e5 2660相当于什么cpu该楼层疑似违规已被系统折叠隐藏此楼查看此楼AMDA8-6500TAPU3517InsufficientdataAMDAthlonIIX46453516502IntelPentiumG3430@3.30GHz3507503AMDPhenomIIX4B403500504AMDPhenomIIX49253496506IntelXeonE5-…

    2026年2月4日
    3
  • pytest测试框架和unittest_python性能测试框架

    pytest测试框架和unittest_python性能测试框架目录单元测试概述 unittest框架介绍 unittest实战单元测试单元测试是开发者编写的一小段代码,用于经验被测代码的一个很小的,很明确的功能是否正确,通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。单元测试什么时候测试单元测试由谁负责单元测试需要注意单元测试的时候一个大前提就是需要清除的知道,自己要测试的程序块所预期的输入和输出,然后根据这个预期和程序逻辑来书写case。这里的预期结果一定要针对需求/设计的逻辑去写,而不是针…

    2022年10月14日
    4
  • js删除数组中指定元素并返回剩下的_js查找数组元素的下标

    js删除数组中指定元素并返回剩下的_js查找数组元素的下标Array.prototype.remove=function(dx){ if(isNaN(dx)||dx>this.length){ returnfalse; } for(vari=0,n=0;i<this.length;i++){ if(this[i]!=this[dx]){ …

    2022年10月1日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号