Redis读写锁

Posted lovoo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis读写锁相关的知识,希望对你有一定的参考价值。

前言

读写锁的好处就是能帮助客户读到的数据一定是最新的,写锁是排他锁,而读锁是一个共享锁,如果写锁一直存在,那么读取数据就要一直等待,直到写入数据完成才能看到,保证了数据的一致性。

代码示例

在这个例子中,使用redis在writeLock()写数据,然后在readLock()函数中读出来

@ResponseBody
    @GetMapping("/writeLock")
    public String writeLock(){
        //获得锁
        RReadWriteLock rwlock = redissonClient.getReadWriteLock("rwlock");
        //加锁
        RLock rLock = rwlock.writeLock();
        try {
            new RedisTool().set("name", "tom");
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }finally {
            System.out.println("解写锁:" + Thread.currentThread().getId());
            //解锁
            rLock.unlock();
        }
        return "writeLock";
    }

    @ResponseBody
    @GetMapping("/readLock")
    public String readLock(){
        //获得锁
        RReadWriteLock rwlock = redissonClient.getReadWriteLock("rwlock");
        //加锁
        RLock rLock = rwlock.readLock();
        try {
            System.out.println("加读锁成功了..........................");
            String name = new RedisTool().get("name");
            System.out.println(name);
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }finally {
            System.out.println("解读锁:" + Thread.currentThread().getId());
            //解锁
            rLock.unlock();
        }
        return "readLock";
    }

以上是关于Redis读写锁的主要内容,如果未能解决你的问题,请参考以下文章

java中ReentrantReadWriteLock读写锁的使用

互斥锁自旋锁读写锁和条件变量

redis并发读写锁,使用Redisson实现分布式锁

Redis实现分布式锁(设计模式应用实战)

Redis实现分布式锁(设计模式应用实战)

Java之——redis并发读写锁,使用Redisson实现分布式锁