redis setnx 鍒嗗竷寮忛攣

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis setnx 鍒嗗竷寮忛攣相关的知识,希望对你有一定的参考价值。

鏍囩锛?/p>

    private final String RedisLockKey = "RedLock";
    private final long altTimeout = 1 * 60 * 60 * 1000L;// 1hour

    /**
     * 鑾峰彇redis鍒嗗竷寮忛攣
     * 
     * @author Administrator
     * @version 1.0
     * @return true:鑾峰緱閿佹潈闄?false:鏈幏寰楅攣鏉冮檺
     */
    private synchronized boolean getRedLock() {
        Long flag = jedis.setnx(RedisLockKey, String.valueOf(System.currentTimeMillis() + altTimeout + 1L));
        if (flag == 0L) {
            String value = jedis.get(RedisLockKey);
            long longVal = Long.parseLong(value);
            if (longVal > System.currentTimeMillis()) {// 鏈繃鏈?/span>
                return Boolean.FALSE;
            } else {// 杩囨湡
                String _value =
                    jedis.getSet(RedisLockKey, String.valueOf(System.currentTimeMillis() + altTimeout + 1L));
                long _longVal = Long.parseLong(_value);
                if (_longVal > System.currentTimeMillis()) {
                    return Boolean.FALSE;
                } else {
                    return Boolean.TRUE;
                }
            }
        } else {
            return Boolean.TRUE;
        }
    }

 

以上是关于redis setnx 鍒嗗竷寮忛攣的主要内容,如果未能解决你的问题,请参考以下文章

鍒嗗竷寮忕紦瀛樺涔犳€荤粨

鍒嗗竷寮忓瓨鍌↖PFS鏁板瓧璧勪骇

鍒嗗竷寮忎簨鍔$殑CAP鐞嗚

鍒嗗竷寮忎簨鍔$殑BASE鐞嗚

鍒嗗竷寮忎簨鍔?浜?

鍒嗗竷寮廔D鐢熸垚绛栫暐 · fossi