1.分布式锁概念
关于锁,其实我们或多或少都有接触过一些,比如synchronized、 Lock这些,这类锁的目的很简单,在多线程环
境下,对共享资源的访问造成的线程安全问题,通过锁的机制来实现资源访问互斥。那么什么是分布式锁呢?或者
为什么我们需要通过Redis来构建分布式锁,其实最根本原因就是Score(范围),因为在分布式架构中,所有的应
用都是进程隔离的,在多进程访问共享资源的时候我们需要满足互斥性,就需要设定一个所有进程都能看得到的范
围,而这个范围就是Redis本身。所以我们才需要把锁构建到Redis中。
Redis里面提供了一些比较具有能够实现锁特性的命令,比如SETEX(在键不存在的情况下为键设置值),那么我们可
以基于这个命令来去实现一些简单的锁的操作
2.分布式锁需要具备的特性
- 能够获取锁和释放锁
- 不会产生死锁(具有超时释放机制)
- 释放者必须是加锁者
3.代码实现
获取jedis连接
public class GpJedisConnectionUtil {
private static JedisPool jedisPool = null;
static{
JedisPoolConfig jpc = new JedisPoolConfig();
jpc.setMaxTotal(100);
jedisPool = new JedisPool(jp