背景
已经写了两节的redis的高性能数据结构了点击查看,今天换个口味,今天我们看一下redis在分布式系统中的应用,使用redis做分布式锁,这可以说是老生常谈的问题了。
redis分布式锁
分布式锁解决的问题
说到锁,第一反应就是线程阻塞,在这里需要注意的是这里的维度会上升一个层次,不单单是一个服务(进程)的线程之间,是多个服务之间的并发安全问题,也可以这么说吧多个进程(这两个进程之间是分别在两个服务上的)之间的并发问题。所以说这里使用线程之间的锁是不能解决问题的如(reentrantLock,Sychronized,CyclicBarrier,CountDownlotch,Semaphore,volatile)这些JUC包和JDK提供的锁机制。他们只能处理同一个进程不同线程之间的并发问题。所以为了解决不同进程,不同server时间的并发安全问题就创造出了redis分布式锁。这里说这么多主要还是区分一下分布式锁和线程锁(这样称呼不知道是否合适,或者说是对象锁)的区别。
根据图理解一下。两个client操作数据库同一条数据进行修改。
实现
- 分布式锁的本质就是,不同服务间或同一个服务间的线程在redis里面争抢坑位,当一个线程占用了这个坑位,门一锁&