dede 网站地图 插件,安贞做网站公司,WordPress小程序二次开发,网页设计与网站建设基础前言
并发控制#xff0c;一般有两种方案#xff0c;悲观锁和乐观锁#xff0c;其中悲观锁是默认每次更新操作肯定会冲突#xff0c;所以每次操作都要先获取锁#xff0c;操作完毕再释放锁#xff0c;适用于写比较多的场景。而乐观锁是默认每次更新操作都不会冲突#…前言
并发控制一般有两种方案悲观锁和乐观锁其中悲观锁是默认每次更新操作肯定会冲突所以每次操作都要先获取锁操作完毕再释放锁适用于写比较多的场景。而乐观锁是默认每次更新操作都不会冲突所以在更新前和更新后都不需要获取锁和释放锁的操作所以效率更高适合于读多写少的场景中。
在es中采用的是乐观锁机制这也很好理解因为es的定位是一个搜索引擎所以一般是应用于读多写少的场景中。
es的乐观锁机制
1. 每次更新文档的version都会1这种方式已废弃 2. 内部版本号控制通过if_seq_noif_primary_term 3. 外部版本号控制versionverion_typeexeternal,其中verison由外部数据源指定如数据从MySQL同步
查询的时候展示 更新后
修改固定值报错
代码 User user new User();user.setAge(27);user.setName(赵六7);user.setInfo(测试人员查询);user.setSex(男);GetResponseUser getResponse elasticsearchClient.get(e - e.index(user_test).id(3), User.class);Long version getResponse.version();Long seqNo getResponse.seqNo();Long primaryTerm getResponse.primaryTerm();System.out.println(更新前的versionversion更新前的seqNoseqNo更新前的primayTermprimaryTerm);// 修改带着版本号UpdateResponseUser updateResponse elasticsearchClient.update(e - e.index(user_test).id(3).doc(user).ifSeqNo(seqNo).ifPrimaryTerm(primaryTerm), User.class);GetResponseUser getResponse2 elasticsearchClient.get(e - e.index(user_test).id(3), User.class);Long version2 getResponse2.version();Long seqNo2 getResponse2.seqNo();Long primaryTerm2 getResponse2.primaryTerm();System.out.println(更新后的versionversion2更新后的seqNoseqNo2更新后的primayTermprimaryTerm2);