悲观锁提供缓存功能需要怎么处理?悲观锁是什么?

TheDisguiser 2020-05-29 16:22:38 java常见问答 3283

我们都知道,乐观锁是相对于悲观锁而言的,那悲观锁又是一种什么锁呢?该如何用它实现缓存功能呢?一起看看吧。

一、悲观锁基础概念

悲观锁,顾名思义它很悲观,它的机制使得它在每次去拿数据的时候都认为肯定会有其他线程来修改数据,所以它相对于乐观锁,每一次拿数据都会上一次锁,这样别的线程想要拿到数据就会一直block,直到它拿到锁为止。

在传统关系型数据库中就用到了很多这种锁机制,如行锁,表锁等,读锁,写锁等各种锁功能,都是在做操作之前先上锁。它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制,同时,也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系统不会修改数据。

二、悲观锁实现缓存功能

这个操作不会影响读的操作,只会在写的操作时阻塞,所以一般在写并发数量不大且并不要求强一致性的情况下使用。

主要思路:在写入一个key时,不锁住当前key,但是会增加另外一个key并锁住,到真正写的时候再去写真实的key。这样,因为并没有锁住真正的key,所以读不会有阻塞。

如下:

悲观锁提供缓存功能

以上就是今天的全部内容了,更多锁机制相关java常见问答知识,请持续关注我们的网站来了解详情吧。

推荐阅读:

乐观锁和悲观锁的区别有什么?有什么作用?

乐观锁和悲观锁详解,具体概念介绍

乐观锁和悲观锁的实现要如何配置?具体概念是什么?