码迷,mamicode.com
首页 > 其他好文 > 详细

redis setnx 分布式锁

时间:2016-06-22 15:20:15      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:

    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()) {// 未过期
                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 分布式锁

标签:

原文地址:http://www.cnblogs.com/shefron/p/5606894.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!