数据多的时候为什么要使用redis而不用mysql?
通常来说,当数据多、并发量大的时候,架构中可以引入Redis,帮助提升架构的整体性能,减少Mysql(或其他数据库)的压力,但不是使用Redis,就不用MySQL 。因为Redis的性能十分优越,可以支持每秒十几万此的读/写操作,并且它还支持持久化、集群部署、分布式、主从同步等,Redis在高并发的场景下数据的安全和一致性,所以它经常用于两个场景:缓存经常会被查询,但是不经常被修改或者删除的数据;比如数据字典,业务数据中的热点数据;这样不仅提升查询效率,还可以减少数据库的压力;经常被查询,实时性要求不高数据,比如网站的最新列表、排行榜之类的数据,只需要定时统计一次,然后把统计结果放到Redis中提供查询(请不要使用select top 10 from xxxx) 。
缓存可以方便数据共享,比如我先用电脑网页打开X东,选了两件商品放到购物车里面,再登录手机APP,也是可以看到购物车里面的商品的 。判断数据是否适合缓存到Redis中,可以从几个方面考虑:会经常查询么?命中率如何?写操作多么?数据大小?我们经常采用这样的方式将数据刷到Redis中:查询的请求过来,现在Redis中查询,如果查询不到,就查询数据库拿到数据,再放到缓存中,这样第二次相同的查询请求过来,就可以直接在Redis中拿到数据;不过要注意【缓存穿透】的问题 。
缓存的刷新会比较复杂,通常是修改完数据库之后,还需要对Redis中的数据进行操作;代码很简单,但是需要保证这两步为同一事务,或最终的事务一致性 。高速读写常见的就是计数器,比如一篇文章的阅读量,不可能每一次阅读就在数据库里面update一次 。高并发的场景很适合使用Redis,比如双11秒杀,库存一共就一千件,到了秒杀的时间,通常会在极为短暂的时间内,有数万级的请求达到服务器,如果使用数据库的话,很可能在这一瞬间造成数据库的崩溃,所以通常会使用Redis(秒杀的场景会比较复杂,Redis只是其中之一,例如如果请求超过某个数量的时候,多余的请求就会被限流) 。
这种高并发的场景,是当请求达到服务器的时候,直接在Redis上读写,请求不会访问到数据库;程序会在合适的时间,比如一千件库存都被秒杀,再将数据批量写到数据库中 。所以通常来说,在必要的时候引入Redis,可以减少MySQL(或其他)数据库的压力,两者不是替代的关系 。我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注 。
为啥Redis/Mongo这么快,就不能直接替代mysql吗?
mysql、redis、MongoDB基本上在对应的业务场景中都会用到 。习惯上,所有的业务数据都是需要“落库”的,这种“落库”指关系型数据库的数据写入,可以很直观的在关系型数据库的客户端进行查询,可以持久化到磁盘空间,因 mysql 开源稳定,满足业务需求,其成为互联网公司的最优选择 。而 redis 经常在高并发的请求加速、优化用户体验中用到,普遍的做法是将数据库中的数据请求一次,放入缓存中,同时返回给用户,而修改数据库时对缓存数据进行清理,保障数据一致性 。
而对于mongoDB,我在业务中使用不多,但其可以高效存储二进制大对象 (比如照片、视频、消息等),在业界得到了充分的认可 。下面简述一下其各自的优缺点,仅供参考 。mysql,优点:体积小、速度快、总体拥有成本低,开源,提供的接口支持多种语言连接操作;支持多种操作系统;采用完全的多线程编程,线程轻量;鉴权体系完善 。
推荐阅读
- 电池容量有多大,苹果xr电池容量
- 小米六配置参数,网上购物用淘宝
- EMUI是什么意思,emui是什么意思
- 为什么联通物联卡网速慢 家里网速慢怎么办
- 3.27为什么这么坑
- 狗狗交流分享综合门户,泰迪狗老爱睡觉为什么
- 狗为什么会干咳,狗狗为什么会咳嗽
- 蝾螈不吃东西是什么原因,为什么蝾螈不吃食
- 猫伸舌头是为什么,猫咪为什么吐舌头
- 赶集网个人二手车吕梁,为什么新的赶集网没有二手车二手房页面