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("更改成功");
        }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 数据库 多数据库结构 一个Redis实例可以支持多个数据库,当客户端与服务端连接并指定到某个数据库时,两者的结构如...
    宇宙最强架构师阅读 3,860评论 0 3
  • 《Redis 入门指南》(第二版) 第一章 Redis 是什么 Redis (REmote Dictionary ...
    EdenPP阅读 67,397评论 3 10
  • redis的事务 严格意义来讲,redis的事务和我们理解的传统数据库(如mysql)的事务是不一样的。 redi...
    jsondream阅读 30,043评论 5 36
  • redis事务 Redis 通过 MULTI 、 DISCARD 、 EXEC 和 WATCH 四个命令来实现事务...
    全能程序猿阅读 6,493评论 0 11
  • Redis 通过 MULTI 、 DISCARD 、 EXEC 和 WATCH 四个命令来实现事务功能, 本章首先...
    binge1024阅读 3,477评论 0 2

友情链接更多精彩内容