redis系列之——分布式锁
端午节最后一天了,三天假期过得太快了,更坏的消息是,下周还要上六天班呢! 趁着假期的尾巴,和大家再叨逼叨redis是如何实现分布式锁的。这期也是为了填之前《redis系列之——缓存穿透、缓存击穿、缓存雪崩》留下的坑。 这一期不是专门聊分布式锁的,所以不会涉及到各种分布式锁实现及相关的比较,只是聊一下如何使用redis实现分布式锁。感觉上一个坑还没填完,这里又挖了一个大坑,各种分布式锁实现及相关的比较后面有时间我会跪着填上的,请大家给我多一点点时间,多一点点温柔。 本期是硬核输出,也是面试高频,更是实战必会。 什么是分布式锁 先说一个场景,消费者在购物网站上下单或收银员在POS机上下单,由于网络等问题,在连续点击了两下,后端网站如何处理,如何响应?对于这个问题,前端需要处理,后端也需要处理。这里主要说后端,后端不光要处理重复订单问题,还有处理幂等问题。幂等问题简单来说就是相同的请求,要有相同的响应结果,这里就不展开了。重复订单该如何处理? 对于一个小的访问量不大的网站,部署了一个tomcat,这个问题可以简单的通过JVM提供的同步锁synchronized实现。但是当网站访问量越来越大时,需要扩展机器,synchronized就不能起作用了。相同的下单参数连续两次请求后端服务器,可能会被分发到两个tomcat上,就会出现synchronized失效问题。