文档章节

分布式锁

 北极之北
发布于 2018/02/05 10:43
字数 149
阅读 10
收藏 0

public static Boolean lock(String redisKey,int seconds,String value) {
        Jedis jedis = null;
        Boolean falg = false;
        try {
            JedisProxy jedisMaster = SpringHelpUtil.getBean(JedisProxy.class);
            jedis = jedisMaster.getJedis();
            Long number = jedis.setnx(redisKey,value);
            //必要的超时机制:获取锁的客户端一旦崩溃,一定要有过期机制,否则其他客户端都降无法获取锁,造成死锁问题
            if(number == 1) {
                jedis.expire(redisKey, seconds);
                falg = true;
            }
            //P4获得锁,master宕机,salve未及时复制,P5或得锁---此异常忽略
            if(number == 0) {
                //rediskey未设置过期时间,设置过期时间
                if(jedis.ttl(redisKey) == -1) {
                    jedis.expire(redisKey, seconds);
                }
            }
        } catch (Exception e) {
            log.error(e.getMessage(),e);
            throw new WorkAuthException(WorkActivateErrorCode.REDIS_ERROR);
        } finally {
            if (jedis != null)
            {
                jedis.close();
            }
        }
        return falg;
    }

© 著作权归作者所有

粉丝 8
博文 23
码字总数 17514
作品 0
深圳
私信 提问
SOFAJRaft-RheaKV 分布式锁实现剖析 | SOFAJRaft 实现原理

SOFAStack(Scalable Open Financial Architecture Stack)是蚂蚁金服自主研发的金融级分布式架构,包含了构建金融级云原生架构所需的各个组件,是在金融场景里锤炼出来的最佳实践。 SOFAJR...

SOFAStack
09/18
19
0
一文弄懂“分布式锁”,一直以来你的选择依据正确吗?

我们本文主要会关注的问题是“分布式锁”的问题。 多线程情况下对共享资源的操作需要加锁,避免数据被写乱,在分布式系统中,这个问题也是存在的,此时就需要一个分布式锁服务。 常见的分布式...

向南
2018/12/04
0
0
基于分布式锁的分布式定时任务实现

1.一个合格的分布式锁需要满足以下条件: 1、在分布式系统环境下,一个方法在同一时间只能被一个机器的一个线程执行; 2、高可用的获取锁与释放锁; 3、高性能的获取锁与释放锁; 4、具备可重...

MrPei
02/26
71
0
程序猿DD/consul-distributed-lock

#基于Consul的分布式锁工具 在构建分布式系统的时候,我们经常需要控制对共享资源的访问。这个时候我们就涉及到分布式锁(也称为全局锁)的实现,本项目将基于Consul的KV存储来实现一套Java的...

程序猿DD
2017/04/19
0
0
redis做分布式锁这几个要注意

一、为什么需要分布式锁 随着互联网的兴起,现代软件发生了翻天覆地的变化,以前单机的程序,已经支撑不了现代的业务。无论是在抗压,还是在高可用等方面都需要多台计算机协同工作来解决问题...

编辑之路
05/05
466
0

没有更多内容

加载失败,请刷新页面

加载更多

java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
今天
6
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
5
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
15
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
16
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部