MySQL和Redis的区别
1. MySQL和Redis的数据类型
- MySQL是关系型数据库,主要拥有存储持久化数据,数据存在在磁盘中,读取的速度比较慢。
- Redis是NoSQL,非关系型数据库,数据存储在缓存中,读取的速度比较快,不过存储的时间有限。
2. MySQL运行机制
- MySQL作为持久化关系型数据库,其存在的缺点在于每次访问数据库,都存在的I/O操作。
如果反复频繁的访问数据库:
- 会造成把大量的时间用在数据库的连接上,从而导致运行的效率较低。
- 反复访问的话,也会导致数据库的负载过高。
3. 缓存
- 缓存是数据交换的缓冲区(cache),当浏览器去执行请求的时候,会先去缓存查找,如果存在的话,就返回数据,否则的话,就去数据库查找。
- 缓存的好处是读取快。
4. Redis数据库
- Redis是缓存数据库,用于存在访问频繁的数据,这样可以减少访问数据库的次数,提升运行效率
5. 总结
- 类型上
- MySQL是关系型数据库,Redis是非关系型数据库
- 作用上
- MySQL用于存储持久性数据到数据库中,功能强大,但是访问速度慢
- Redis可以用于存储频繁访问的数据,访问速度快,减少数据库的I/O操作
- 需求上
- MySQL和Redis由于需求的不同,一般是配合使用。
- 补充
-
redis适合放一些频繁使用,比较热的数据,因为是放在内存中,读写速度都非常快,一般会应用在下面一些场景(排行榜、计数器、消息队列推送、好友关注、粉丝)
-
并且mysql存储在磁盘里,redis存储在内存里,redis既可以用来做持久存储,也可以做缓存,而目前大多数公司的存储都是mysql + redis,mysql作为主存储,redis作为辅助存储被用作缓存,加快访问读取的速度,提高性能
- 那么为什么不直接全部用redis存储呢?
- 因为Redis存储在内存中,如果存储在内存中,存储容量肯定要比磁盘少很多,那么要存储大量数据,只能花更多的钱去购买内存,造成在一些不需要高性能的地方是相对比较浪费的,所以目前基本都是MySQL(主) + Redis(辅),在需要性能的地方使用Redis,在不需要高性能的地方使用MySQL。
- 查询上
-
mysql支持sql查询,可以实现一些关联的查询以及统计;
-
redis对内存要求比较高,在有限的条件下不能把所有数据都放在redis;
-
MySQL偏向于存数据,Redis偏向于快速取数据,但Redis查询复杂的表关系时不如MySQL,所以可以把热门的数据放Redis,MySQL存基本数据。
参考 :https://www.cnblogs.com/zxh1297/p/9394108.html
https://blog.csdn.net/zy47675676/article/details/89705062