From e633dafbb3060383911894e0c8ac0df95bdc307a Mon Sep 17 00:00:00 2001 From: zhouhao Date: Sat, 24 Sep 2016 00:06:49 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=84=9A=E6=9C=AC=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE=E9=94=99=E8=AF=AF=E9=97=AE=E9=A2=98=E5=92=8C=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E5=88=9D=E5=A7=8B=E5=8C=96Lock=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lock/support/redis/RedisReadWriteLock.java | 12 +++++------- .../lock/support/redis/scripts}/scheckAndVset.lua | 0 .../lock/support/redis/scripts}/vcheckAndsAdd.lua | 0 3 files changed, 5 insertions(+), 7 deletions(-) rename hsweb-web-concurrent/hsweb-web-concurrent-lock/src/main/resources/{META-INF => org/hsweb/concurrent/lock/support/redis/scripts}/scheckAndVset.lua (100%) rename hsweb-web-concurrent/hsweb-web-concurrent-lock/src/main/resources/{META-INF => org/hsweb/concurrent/lock/support/redis/scripts}/vcheckAndsAdd.lua (100%) diff --git a/hsweb-web-concurrent/hsweb-web-concurrent-lock/src/main/java/org/hsweb/concurrent/lock/support/redis/RedisReadWriteLock.java b/hsweb-web-concurrent/hsweb-web-concurrent-lock/src/main/java/org/hsweb/concurrent/lock/support/redis/RedisReadWriteLock.java index 73731bfe7..8febdcb22 100644 --- a/hsweb-web-concurrent/hsweb-web-concurrent-lock/src/main/java/org/hsweb/concurrent/lock/support/redis/RedisReadWriteLock.java +++ b/hsweb-web-concurrent/hsweb-web-concurrent-lock/src/main/java/org/hsweb/concurrent/lock/support/redis/RedisReadWriteLock.java @@ -10,7 +10,6 @@ import org.springframework.scripting.support.ResourceScriptSource; import org.springframework.util.Assert; import java.util.*; -import java.util.concurrent.ConcurrentSkipListMap; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; @@ -37,9 +36,9 @@ public class RedisReadWriteLock implements ReadWriteLock { redisScriptRead = new DefaultRedisScript<>(); redisScriptWrite = new DefaultRedisScript<>(); - redisScriptRead.setScriptSource(new ResourceScriptSource(new ClassPathResource("MEAT_INF/scripts/vcheckAndSadd.lua"))); + redisScriptRead.setScriptSource(new ResourceScriptSource(new ClassPathResource("scripts/vcheckAndsAdd.lua", RedisReadWriteLock.class))); redisScriptRead.setResultType(Boolean.class); - redisScriptWrite.setScriptSource(new ResourceScriptSource(new ClassPathResource("MEAT_INF/scripts/scheckAndVset.lua"))); + redisScriptWrite.setScriptSource(new ResourceScriptSource(new ClassPathResource("scripts/scheckAndVset.lua", RedisReadWriteLock.class))); redisScriptWrite.setResultType(Boolean.class); } @@ -49,10 +48,10 @@ public class RedisReadWriteLock implements ReadWriteLock { Assert.notNull(key); Assert.notNull(redisTemplate); this.redisTemplate = new StringRedisTemplate(redisTemplate.getConnectionFactory()); - readLock = new ReadLock(); - writeLock = new WriteLock(); readLockKey = PREFIX + key + ".read.lock"; writeLockKey = PREFIX + key + ".write.lock"; + readLock = new ReadLock(); + writeLock = new WriteLock(); lockValue = UUID.randomUUID().toString(); } @@ -90,7 +89,6 @@ public class RedisReadWriteLock implements ReadWriteLock { } - class ReadLock implements Lock { private List keys = new ArrayList<>(); @@ -139,7 +137,7 @@ public class RedisReadWriteLock implements ReadWriteLock { @Override public boolean tryLock() { boolean locked = redisTemplate.execute(redisScriptRead, keys, lockValue()); - if (locked){ + if (locked) { expire(); } return locked; diff --git a/hsweb-web-concurrent/hsweb-web-concurrent-lock/src/main/resources/META-INF/scheckAndVset.lua b/hsweb-web-concurrent/hsweb-web-concurrent-lock/src/main/resources/org/hsweb/concurrent/lock/support/redis/scripts/scheckAndVset.lua similarity index 100% rename from hsweb-web-concurrent/hsweb-web-concurrent-lock/src/main/resources/META-INF/scheckAndVset.lua rename to hsweb-web-concurrent/hsweb-web-concurrent-lock/src/main/resources/org/hsweb/concurrent/lock/support/redis/scripts/scheckAndVset.lua diff --git a/hsweb-web-concurrent/hsweb-web-concurrent-lock/src/main/resources/META-INF/vcheckAndsAdd.lua b/hsweb-web-concurrent/hsweb-web-concurrent-lock/src/main/resources/org/hsweb/concurrent/lock/support/redis/scripts/vcheckAndsAdd.lua similarity index 100% rename from hsweb-web-concurrent/hsweb-web-concurrent-lock/src/main/resources/META-INF/vcheckAndsAdd.lua rename to hsweb-web-concurrent/hsweb-web-concurrent-lock/src/main/resources/org/hsweb/concurrent/lock/support/redis/scripts/vcheckAndsAdd.lua