除了缓存mysql的数据以提高并发读取性能,Redis还有什么应用场景?

我们都知道,Redis可以很好的被运用在数据缓存的场景上,能大幅度提高相对于MySQL来说的读写效率。
但是,我发现,很多被Redis爱好者们宣传的应用场景,其实是不存在的,或者说不可行的。
例如下面这个

商品秒杀系统
简单来说,就是减少库存和增加订单来完成一个交易,这个场景下,要解决的问题是

  1. 服务器如何在大量用户抢购,高并发情况下不会宕机
  2. 有限的商品,如何在高并发请求下防止超卖

这个链接中,https://www.zhihu.com/questio...
@阿里云云栖社区 所说的,一层层拦截多余请求。
那么到了那个缓存剩余商品数量,那一层才是由Redis负责。
但是实际上,在那里我们用一个文件来记录剩余商品数量不是一样能实现吗。一样可以替MySQL缓存查询剩余商品数量的请求。

至于防止超卖,这更是MySQL的拿手好戏了。
使用一个update goods set count=count-1 where id=x and count>0; 然后取影响行数就可以实现了。
甚至我们可以将新增订单和减少库存放入同一个事务,更可防止“少卖”(减少了库存,但是程序中断而没有新增订单)的情况

虽然在实际测试中,我在一台低配VPS的测试结果显示,MySQL每秒只可以处理100左右的事务,但是我们可以将商品分配到100个MySQL表/实例中,来实现每秒上万的订单处理啊。

我没有使用过高配服务器,也许在高配服务器上,单个MySQL实例即可处理每秒上万的事务。

既然Redis的典型应用场景,MySQL也可以很轻松的解决,那么Redis还有什么应用场景呢?

阅读 2.1k
1 个回答
丰富的数据类型,缓存
集合,有序集合,hash,轻量队列
计数器,排行榜,悲观锁,乐观锁
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题