// Path: Src/Java/Redisson/RedissonTest/src/main/java/com/johnnian/config/RedisCluster.java
// @Component
// public class RedisCluster{
// 		
// 	
// 	@Autowired
// 	private RedissonClient redissonClient;
// 	
// 
// 	public String set(String key, String value){
// 		
// 		RBucket<String>bucket = redissonClient.getBucket(key);
// 		
// 		if (bucket != null) {
// 			bucket.set(value);
// 		}
// 		
// 		return value;
//     }
// 	
// 	public String get(String key) {
// 		String value = null;
// 		RBucket<String>bucket = redissonClient.getBucket(key);
// 		if (bucket != null) {
// 			value = bucket.get();
// 		}
// 		return value;
// 	}
// 	
// 	
// 	
// 		
// }
// 
// Path: Src/Java/Redisson/RedissonTest/src/main/java/com/johnnian/config/RedisLock.java
// @Component
// public class RedisLock {
// 
//     private final Logger logger = Logger.getLogger(getClass());
// 
// 	//分布式锁：qrRemoveLock
// 	public static final String QR_REMOVE_LOCK = "GetWuHanTianDiQrCodeTask.qrRemoveLock";
// 	/**
// 	 * 默认超时时间：操作这个时间，自动释放锁
// 	 */
// 	@SuppressWarnings("unused")
// 	public static final long defalutTimeoutSeconds = 1800;
// 	
// 	@Autowired
// 	private RedissonClient redissonClient;
// 	
// 	/**
// 	 * 获取锁
// 	 * @param name 锁的名字
// 	 * @return
// 	 */
// 	public RLock getLock(String name) {
// 		logger.info("尝试获取/创建分布式锁：" + name);
// 		return redissonClient.getLock(name);
// 	}
// 
// 	/**
// 	 * 锁住：如果执行完之后，没有触发unlock，自动解锁
// 	 * @param lock
// 	 */
// 	public void lock(RLock lock) {
// 		// TODO Auto-generated method stub
// 		logger.info("分布式锁：locking..." + lock.getName() + " 默认超时(秒)：" + defalutTimeoutSeconds);
// 		lock.lock(defalutTimeoutSeconds, TimeUnit.SECONDS);
// 	}
// 	
// 	public void lock(RLock lock, long exprie){
// 		logger.info("分布式锁：locked，默认超时(秒)：" + defalutTimeoutSeconds);
// 		if (exprie <= 0){
// 			lock.lock(defalutTimeoutSeconds, TimeUnit.SECONDS);
// 		}else{
// 			lock.lock(exprie, TimeUnit.SECONDS);
// 		}
// 	}
// 
// 	/**
// 	 * 解锁
// 	 * @param lock
// 	 */
// 	public void unlock(RLock lock) {
// 		// TODO Auto-generated method stub
// 		logger.info("分布式锁：unlock---" + lock.getName());
// 		lock.unlock();
// 	}
// 	
// }


import java.util.UUID;
import org.apache.log4j.Logger;
import org.redisson.api.RLock;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.johnnian.config.RedisCluster;
import com.johnnian.config.RedisLock;
package com.johnnian.controller;




@RestController
public class TestController {

    private final Logger logger = Logger.getLogger(getClass());

	@Autowired
	private RedisLock redisLock;
	
	@Autowired
	private RedisCluster redisCluster;
	
	@RequestMapping("/redissonlock")
	public String redissonLock() {
		
		try {
			String uuid = UUID.randomUUID().toString();
			RLock lock = redisLock.getLock(uuid);
			redisLock.lock(lock);
			Thread.currentThread().sleep(1000);
			redisLock.unlock(lock);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			logger.error("Sleep 异常："+e);
		} catch (Exception e) {
			// TODO: handle exception
			logger.error(e);
		}
		
		return "success";
	}
	
	@RequestMapping("/redisrw")
// Path: Src/Java/Redisson/RedissonTest/src/main/java/com/johnnian/config/RedisCluster.java
// @Component
// public class RedisCluster{
// 		
// 	
// 	@Autowired
// 	private RedissonClient redissonClient;
// 	
// 
// 	public String set(String key, String value){
// 		
// 		RBucket<String>bucket = redissonClient.getBucket(key);
// 		
// 		if (bucket != null) {
// 			bucket.set(value);
// 		}
// 		
// 		return value;
//     }
// 	
// 	public String get(String key) {
// 		String value = null;
// 		RBucket<String>bucket = redissonClient.getBucket(key);
// 		if (bucket != null) {
// 			value = bucket.get();
// 		}
// 		return value;
// 	}
// 	
// 	
// 	
// 		
// }
// 
// Path: Src/Java/Redisson/RedissonTest/src/main/java/com/johnnian/config/RedisLock.java
// @Component
// public class RedisLock {
// 
//     private final Logger logger = Logger.getLogger(getClass());
// 
// 	//分布式锁：qrRemoveLock
// 	public static final String QR_REMOVE_LOCK = "GetWuHanTianDiQrCodeTask.qrRemoveLock";
// 	/**
// 	 * 默认超时时间：操作这个时间，自动释放锁
// 	 */
// 	@SuppressWarnings("unused")
// 	public static final long defalutTimeoutSeconds = 1800;
// 	
// 	@Autowired
// 	private RedissonClient redissonClient;
// 	
// 	/**
// 	 * 获取锁
// 	 * @param name 锁的名字
// 	 * @return
// 	 */
// 	public RLock getLock(String name) {
// 		logger.info("尝试获取/创建分布式锁：" + name);
// 		return redissonClient.getLock(name);
// 	}
// 
// 	/**
// 	 * 锁住：如果执行完之后，没有触发unlock，自动解锁
// 	 * @param lock
// 	 */
// 	public void lock(RLock lock) {
// 		// TODO Auto-generated method stub
// 		logger.info("分布式锁：locking..." + lock.getName() + " 默认超时(秒)：" + defalutTimeoutSeconds);
// 		lock.lock(defalutTimeoutSeconds, TimeUnit.SECONDS);
// 	}
// 	
// 	public void lock(RLock lock, long exprie){
// 		logger.info("分布式锁：locked，默认超时(秒)：" + defalutTimeoutSeconds);
// 		if (exprie <= 0){
// 			lock.lock(defalutTimeoutSeconds, TimeUnit.SECONDS);
// 		}else{
// 			lock.lock(exprie, TimeUnit.SECONDS);
// 		}
// 	}
// 
// 	/**
// 	 * 解锁
// 	 * @param lock
// 	 */
// 	public void unlock(RLock lock) {
// 		// TODO Auto-generated method stub
// 		logger.info("分布式锁：unlock---" + lock.getName());
// 		lock.unlock();
// 	}
// 	
// }


// Path: Src/Java/Redisson/RedissonTest/src/main/java/com/johnnian/controller/TestController.java
import java.util.UUID;
import org.apache.log4j.Logger;
import org.redisson.api.RLock;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.johnnian.config.RedisCluster;
import com.johnnian.config.RedisLock;

package com.johnnian.controller;




@RestController
public class TestController {

    private final Logger logger = Logger.getLogger(getClass());

	@Autowired
	private RedisLock redisLock;
	
	@Autowired
	private RedisCluster redisCluster;
	
	@RequestMapping("/redissonlock")
	public String redissonLock() {
		
		try {
			String uuid = UUID.randomUUID().toString();
			RLock lock = redisLock.getLock(uuid);
			redisLock.lock(lock);
			Thread.currentThread().sleep(1000);
			redisLock.unlock(lock);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			logger.error("Sleep 异常："+e);
		} catch (Exception e) {
			// TODO: handle exception
			logger.error(e);
		}
		
		return "success";
	}
	
	@RequestMapping("/redisrw")
	public String redisrw() {