java redis 实现乐观锁_Redis:多线程修改同一个Key使用watch+事务(mutil)实现乐观锁...

本文介绍了如何使用Java和Redis的watch+事务(mutil)来实现乐观锁,以解决高并发下多线程修改同一key导致的数据不一致问题。通过示例代码展示了在并发环境中遇到的问题以及使用watch和事务如何避免此类问题。
摘要由CSDN通过智能技术生成

本篇文章是通过watch(监控)+mutil(事务)实现应用于在分布式高并发处理等相关场景。下边先通过redis-cli.exe来测试多个线程修改时,遇到问题及解决问题。

高并发下修改同一个key遇到的问题:

1)定义一个hash类型的key,key为:lock_test,元素locker的值初始化为0。

2)实现高并发下对locker元素的值递增:定义64个多线程,并发的对lock_test元素locker的值进行修改。

packagecom.dx.es;importjava.util.concurrent.CountDownLatch;importredis.clients.jedis.Jedis;importredis.clients.jedis.JedisPool;public classTest_UnLock {public static voidmain(String[] args) {final JedisPool pool =RedisUtil.getPool();//获得jedis对象

Jedis jedis =pool.getResource();

jedis.hset("lock_test", "locker", "0");

String val= jedis.hget("lock_test", "locker");

System.out.println("lock_test.locker的初始值為:" +val);

jedis.close();int threahSize = 64;final CountDownLatch threadsCountDownLatch = newCountDownLatch(threahSize);

Run

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值