Redis和MySQL的区别

一、含义
1、mysql的运行机制
mysql作为持久化存储的关系型数据库,相对薄弱的地方在于每次请求访问数据库时,都存在着I/O操作。
如果反复频繁的访问数据库。
第一:会在反复链接数据库上花费大量时间,从而导致运行效率过慢;
第二:反复的访问数据库也会导致数据库的负载过高,那么此时缓存的概念就衍生了出来。

2、redis
①:redis数据库就是一款缓存数据库,用于存储使用频繁的数据,这样减少访问数据库的次数,提高运行效率。

②:一般都是用redis作缓存,只用来读数据(将数据库中的数据读出来放到redis,下一次读取时取redis中的数据),而mysql则用来做数据的持久话

③:执行过程:当需要查询数据时,先在redis缓存中找对应的键值对,若不存在,则执行对应的sql,然后再把查询的sql结果放到redis的缓存中

④:Redis和memcached,都是缓存数据库,可以大大提升高数据量的web访问速度。但是memcached只是提供了简单的数据结构string,而Redis的value可以是string、list、set、hash、sorted set这些,功能更加强大。

3、缓存
缓存就是数据交换的缓冲区(cache),当浏览器执行请求时,首先会对在缓存中进行查找,如果存在,就获取;否则就访问数据库。

二、区别

比较 mysql redis
类型 关系型数据库 缓存型数据库
属性 一个中小型的网络数据库,比oracle和sqlserver小, 但是并发能力远超过acess这样的桌面数据库。 支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。可以认为redis比mysql简化很多。
存储方式 持久化存储 (缓存或持久化存储)在于mysql结合中一般redis用来做缓存
存储位置 磁盘 内存
作用 存放持久化数据,将数据存储在硬盘中 用于存储使用频繁的数据,这样减少访问数据库的次数,提高运行效率
优点 访问速度快
缺点 读取速度较慢 保存时间有限

三、使用
web应用中一般采用MySQL+Redis的方式,web应用每次先访问Redis,如果没有找到数据,才去访问MySQL
redis性能好,快,并发高,但不能处理逻辑,而且不支持事务,主要做数据缓存,减少mysql数据库的压力;
redis达到最大内存限制后,会导致所有写命令失败。所以一定要做好持久化和容量预估;

四、如何解决mysql、redis读写一致性的问题?
其实只把redis当作缓存的话是不存在写一致性的问题;
(1)读操作:在读取数据时,先从redis中读取数据,如果redis不存在,再到DB中去读数据;
(2)插入操作:redis只用来作缓存,不参与写操作,直接对数据库进行插入、修改操作,避免了脏数据;
(3)修改操作:修改操作是会影响读一致性的问题,具体的思路是,修改时修改DB的数据,然后设置redis缓存无效;

  若能保证这三个的一致性,则就能保证redis+mysql的读写一致性;
发布了222 篇原创文章 · 获赞 4 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_42976139/article/details/104014598