您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
redis是否可以代替mysql进行数据存储?怎么样?
数据,数据库,缓存redis是否可以代替mysql进行数据存储?怎么样?
发布时间:2016-12-08加入收藏来源:互联网点击:
回答于 2019-09-11 08:43:50
想搞明白这个问题,必须要先知道,什么是redis,什么是mysql,他们的各自优缺点是什么
redis:是一种非关系kv内存数据库(也就是常说的nosql),即将数据存储在缓存中,支持的数据类型比较多,比如字符串,hash,list等缓存的读取速度快,能够大大的提高运行效率,但是保存时间有限。
mysql:是关系型数据库,主要用于存放持久化数据,将数据存储在硬盘中,数据的格式是我们熟知的二维表格的样式,关系型数据库具有很多强大的功能,大部分都支持SQL语句查询,对事务也有很好的支持。
mysql和redis没有竞争的关系,通常当并发访问量比较大的时候,特别是读操作很多,架构中可以引入redis,帮助提升架构的整体性能,减少mysql(或其他关系型数据库)的压力。
所以两者是相互配合,而不是替代,因为Redis的性能十分优越,可以支持每秒十几万次的读/写操作,并且它还支持持久化、集群部署、分布式、主从同步等,Redis在高并发的场景下数据的安全和一致性,所以它经常用于这些场景:
经常要被查询,但是创建、更新、删除等操作频率低的数据;比如数据字典,确定了之后很少被修改,是可以放到缓存中的;还有热点数据,查询极为频繁的数据,放到redis中可以减少mysql的压力;
经常被查询,但是实时性要求不高数据,比如购物网站的热销排行榜,定时统计一次后把统计结果放到redis中提供查询 。
缓存还可以做数据共享(session共享),在分布式的架构中,把用户的session数据放到redis中。
高并发场景下的计数器,比如秒杀,把商品库存数量放到redis中(秒杀的场景会比较复杂,redis只是其中之一,例如如果请求超过某个数量的时候,多余的请求就会被限流);
因为redis对高并发的支持和单线程机智,它也经常用作分布式锁;
redis虽然功能强大、性能高效,但是也不是万能的,项目在引入redis的时候,需要考虑的问题也比较多,并且会带来额外的开发和运维的工作量。
首先要判断数据是否适合缓存到redis中,可以从几个方面考虑:数据会被经常查询么?命中率如何?写操作多么?数据大小?数据一致性如何保证?
我们经常采用这样的方式将数据刷到redis中:查询的请求过来,现在redis中查询,如果查询不到,就查询数据库拿到数据,再放到缓存中,这样第二次相同的查询请求过来,就可以直接在redis中拿到数据;不过要注意【缓存穿透】的问题。
缓存的刷新会比较复杂,通常是修改完数据库之后,还需要对redis中的数据进行操作;代码很简单,但是需要保证这两步为同一事务,或最终的事务一致性。
回答于 2019-09-11 08:43:50
不可以,存储数据类型不一样,都是开源数据库,用redis 代替mysql没意义
回答于 2019-09-11 08:43:50
redis是nosql数据库,擅长处理键值对(key, value)结构的数据,同时他还支持丰富的数据结构 set, map, list, zset
mysql擅长处理关系型数据
如果你的应用场景,仅限于存储和简单查询,不去做复杂的关联操作,并且能够容忍一定的数据丢失的话,可以使用redis代替mysql。但是主流场景不这样使用,redis主要用作热点数据的缓存,相当于缓存一些读多写少的数据,用于降低mysql(后者其它关系型数据库)的读写压力。
回答于 2019-09-11 08:43:50
这个完全取决于你对数据的要求,是否允许丢失,还是必须要求不允许丢失。我觉得就可以直接存放redis.如果用户去网站买东西,这时候要记录用户的一个在网站操作的操作行为,(看了哪个商品、点击了哪个商品、点击了哪个按钮)日志,可以用来还原当时用户的操作行为这个日志的记录是可以放在redis的,但是用户下单、支付、配送信息等这些是要保持强一致性,并且不允许丢失的所以需要存入mysql.当用户下完单之后想看下自己的订单详情,这时候订单详情一些固定的信息也是可以放redis的,所以redis和mysql是可以结合一起使用的。什么事情都没有绝对的,完全取决于你的业务要求。是业务驱动技术。
回答于 2019-09-11 08:43:50
缓存数据库怎么替代物理数据库
回答于 2019-09-11 08:43:50
你是想说SAP HANA. 吧
上一篇:暑假该怎么过?
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |