redis实现多个线程同时修改同一个数据,保证数据一致性

memcached在多线程情况下是支持并发操作的,但是如果使用redis的话就发现redis是单线程,所以涉及到了并发的问题.

GET 获得键值后保证该键值不被其他客户端修改,直到函数执行完成后才允许其他客户端修改该键键值,这样也可以防止竞态条件.

watch可以监控一个或多个键,一旦其中有一个键被修改(或删除),之后的事务就不会执行。监控一直持续到EXEC命令(事务中的命令是在EXEC之后才执行的,所以在MULTI命令后可以修改WATCH监控的键值)

RedisTemplate template  = null;//这里配置自己的redis
        template.watch("key");
        template.multi();
        template.opsForValue().set("key","value");
        List exec = template.exec();
        if (null==exec){
            System.out.println("已经有其他线程更改了");
        }else {
            System.out.println("更改成功");
        }
    原文作者:H_Man
    原文地址: https://www.jianshu.com/p/935e3a06d0bb
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞