伪代码 // 获取锁getLock() {// 是否有正在执行的线程 boolean hasLock = false; try { hasLock = redisClient.setnx("lockKey", "ing") == 1; if (hasLock) { redisClient.expire("lockKey", 60*60);//一小时 } } catch (Exception e) {
          // 获取锁
getLock() {
	// 是否有正在执行的线程
    boolean hasLock = false;
    try {
        hasLock = redisClient.setnx("lockKey", "ing") == 1;
        if (hasLock) {
            redisClient.expire("lockKey", 60*60);//一小时
        }
    } catch (Exception e) {
        logger.error("redis.lock.setnx is error", e);
        // 避免成功获取到锁,但是未成功设置过期时间
        redisClient.expire("lockKey", 60*60);//一小时
    }
    
    reutrn hasLock;
}
//释放锁
releaseLock() {
    redisClient.del("lockKey");
}
//调用入口
doMethod() {
	if(!getLock()) {
		//未获取到锁
		return "不允许调用";
	}
	//获取到锁,开始处理
	try{
		//业务逻辑执行
		return "处理成功";
	} finally {
		// 只要获取到锁,则在业务逻辑结束之后,必须释放锁
		releaseLock();
	}
	return "异常";
}
        
        