乐观锁与悲观锁-Redisso

原创
小哥 3年前 (2022-11-08) 阅读数 41 #大杂烩

同步锁

/**
 * 确保您可以读取最新数据。在修改期间,写锁是一个互斥锁(互斥锁)。读取锁是共享锁
 * 如果写入锁未释放,则读取必须等待。
 */
@GetMapping("/read")
@ResponseBody
public String readValue() {

    RReadWriteLock readWriteLock = redisson.getReadWriteLock("rw-lock");
    String s = "";
    RLock rLock = readWriteLock.readLock();
    try {
        rLock.lock();
        s = stringRedisTemplate.opsForValue().get("writeValue");
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        rLock.unlock();
    }
    return s;
}

@GetMapping("/write")
@ResponseBody
public String writeValue() {

    RReadWriteLock readWriteLock = redisson.getReadWriteLock("rw-lock");
    String s = "";
    RLock rLock = readWriteLock.writeLock();
    try {
        //1,更改数据和写入锁定,读取数据和读取锁定
        rLock.lock();
        TimeUnit.SECONDS.sleep(10);
        s = UUID.randomUUID().toString();
        stringRedisTemplate.opsForValue().set("writeValue", s);
    } catch (InterruptedException e) {
        e.printStackTrace();
    } finally {
        rLock.unlock();
    }
    return s;
}

读 + 读 :相当于无锁,并发读取,仅在redis它在中有很好的记录,所有当前的读锁都将同时成功锁定。
写 + 读 :等待写入锁定释放。
写 + 写入:阻塞方法
读 + 写作:有一个阅读锁,写作也需要等待。
/只要有写作,我们就必须等待。

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

热门