开启:MULTI 执行:EXEC 放弃本次提交:DISCARD watch监控: 悲观锁就是每次去拿数据时候都会上锁,如行锁,表锁等。 乐观锁(version)每次拿数据时候认为别人不会修改,所以不会上锁,但在更新时候会判断一下期间是否有人更新过,可以使用版本号机制,多用于读应用。 UNWATCH ...
分类:
其他好文 时间:
2019-07-02 21:09:35
阅读次数:
120

 概念理解 公平锁:加锁前先查看是否有排队等待的线程,有的话优先处理排在前面的线程,先来先得。 非公平所:线程加锁时直接尝试获取锁,获取不到就自动到队尾等待。 例子 ReentrantLock 同时支持两种锁 适用场景 更多的是直接使用非公平锁:非公平锁比公平 ...
分类:
编程语言 时间:
2019-06-24 00:23:38
阅读次数:
89
前言分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。 可靠性首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件: 互斥性。在任意时刻,只有一个客户端能持有 ...
分类:
其他好文 时间:
2019-06-19 20:06:57
阅读次数:
105
分布式锁一般有三种实现方式:1\. 数据库乐观锁;2\. 基于Redis的分布式锁;3\. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。
分类:
编程语言 时间:
2019-06-19 16:43:32
阅读次数:
106
1.首先做一个测试:i++。输出结果为10,因为在底层实现的时候会引入一个临时变量具体为: 所以i++就是一个非原子性操作,采用多线程再次测试:测试结果中会因为i++的非原子性操作带来读写不一致问题。比如:1,3,2,2,4,5,6,7,8,9序列的出现。两个2的出现就说明了,两个线程在同时从主存中 ...
分类:
编程语言 时间:
2019-06-17 17:34:18
阅读次数:
140
ES是基于乐观锁进行并发控制的。 如果有并发的业务场景,可以直接使用ES内置乐观锁机制。 使用的时候,java程序需要先Get指定的记录,获取到版本号,然后Put的时候,带着该版本号,请求更新。 ES只有判断到 该记录的 version = 请求中的version值 时,才能进行更新。如果不相等,则 ...
分类:
其他好文 时间:
2019-06-16 21:51:51
阅读次数:
148
Partial Update 内部执行过程: 首先,ES文档是不可变的,它们只能被修改,不能被替换。Update Api 也不例外。 Update API 简单使用与之前描述相同的 检索-修改-重建索引(reindex) 的处理过程。 区别在于这个过程发生在分片内部。 相当于ES的Shard内部 执 ...
分类:
其他好文 时间:
2019-06-16 21:32:23
阅读次数:
166
锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足。在DBMS中,可以按照锁的粒度把数据库锁分为行级锁(INNODB引擎)、表级锁(MYISAM引擎)和页级锁(BDB引擎 )。 行锁 锁定整个行数据,开销大,加锁慢,会出现死锁。锁定粒度小,发生锁冲突的概率低,并 ...
分类:
数据库 时间:
2019-06-14 14:11:43
阅读次数:
311