Skip to content

Commit 37dee1a

Browse files
author
qiujiayu
committed
增加命名空间(namespace),隔离各个系统间数据。
1 parent a8582a0 commit 37dee1a

File tree

3 files changed

+52
-12
lines changed

3 files changed

+52
-12
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>com.github.qiujiayu</groupId>
55
<artifactId>autoload-cache</artifactId>
6-
<version>1.7</version>
6+
<version>1.8</version>
77
<packaging>jar</packaging>
88
<name>AutoLoadCache</name>
99
<description>User Spring AOP and annotation to do with cache.</description>

src/main/java/com/jarvis/cache/memcache/CachePointCut.java

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,34 +17,54 @@ public class CachePointCut extends AbstractCacheManager<Serializable> {
1717

1818
private MemcachedClient memcachedClient;
1919

20+
private String namespace;
21+
2022
public CachePointCut(AutoLoadConfig config) {
2123
super(config);
2224
}
2325

26+
public String getNamespace() {
27+
return namespace;
28+
}
29+
30+
public void setNamespace(String namespace) {
31+
this.namespace=namespace;
32+
}
33+
34+
private String appendNamespace(String cacheKey) {
35+
if(null != namespace && namespace.length() > 0) {
36+
return namespace + ":" + cacheKey;
37+
}
38+
return cacheKey;
39+
}
40+
2441
@Override
2542
public void setCache(String cacheKey, CacheWrapper<Serializable> result, int expire) {
2643
result.setLastLoadTime(System.currentTimeMillis());
44+
cacheKey=appendNamespace(cacheKey);
2745
memcachedClient.set(cacheKey, expire, result);
2846
}
2947

3048
@SuppressWarnings("unchecked")
3149
@Override
32-
public CacheWrapper<Serializable> get(String key) {
33-
return (CacheWrapper<Serializable>)memcachedClient.get(key);
50+
public CacheWrapper<Serializable> get(String cacheKey) {
51+
cacheKey=appendNamespace(cacheKey);
52+
return (CacheWrapper<Serializable>)memcachedClient.get(cacheKey);
3453
}
3554

3655
/**
3756
* 通过组成Key直接删除
3857
* @param key
3958
*/
4059
@Override
41-
public void delete(String key) {
42-
if(null == memcachedClient || null == key) {
60+
public void delete(String cacheKey) {
61+
if(null == memcachedClient || null == cacheKey) {
4362
return;
4463
}
64+
cacheKey=appendNamespace(cacheKey);
4565
try {
46-
memcachedClient.delete(key);
47-
this.getAutoLoadHandler().resetAutoLoadLastLoadTime(key);
66+
memcachedClient.delete(cacheKey);
67+
this.getAutoLoadHandler().resetAutoLoadLastLoadTime(cacheKey);
4868
} catch(Exception e) {
4969
}
5070
}
@@ -78,8 +98,8 @@ public void deleteDefinedCacheKey(String keySpEL, Object[] arguments) {
7898
public void delete(List<String> keys) {
7999
try {
80100
if(null != keys && !keys.isEmpty()) {
81-
for(String key: keys) {
82-
this.delete(key);
101+
for(String cacheKey: keys) {
102+
this.delete(cacheKey);
83103
}
84104
}
85105
} catch(Exception e) {

src/main/java/com/jarvis/cache/redis/ShardedCachePointCut.java

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,22 +30,40 @@ public class ShardedCachePointCut extends AbstractCacheManager<Serializable> {
3030

3131
private ShardedJedisPool shardedJedisPool;
3232

33+
private String namespace;
34+
3335
public ShardedCachePointCut(AutoLoadConfig config) {
3436
super(config);
3537
}
3638

39+
public String getNamespace() {
40+
return namespace;
41+
}
42+
43+
public void setNamespace(String namespace) {
44+
this.namespace=namespace;
45+
}
46+
3747
private void returnResource(ShardedJedis shardedJedis) {
3848
shardedJedis.close();
3949
}
4050

51+
private String appendNamespace(String cacheKey) {
52+
if(null != namespace && namespace.length() > 0) {
53+
return namespace + ":" + cacheKey;
54+
}
55+
return cacheKey;
56+
}
57+
4158
@Override
42-
public void setCache(final String cacheKey, final CacheWrapper<Serializable> result, final int expire) {
59+
public void setCache(String cacheKey, final CacheWrapper<Serializable> result, final int expire) {
4360
if(null == shardedJedisPool || null == cacheKey) {
4461
return;
4562
}
4663
if(cacheKey.indexOf("*") != -1 || cacheKey.indexOf("?") != -1) {
4764
throw new java.lang.RuntimeException("cacheKey:" + cacheKey + "; has '*' or '?'");
4865
}
66+
cacheKey=appendNamespace(cacheKey);
4967
ShardedJedis shardedJedis=null;
5068
try {
5169
result.setLastLoadTime(System.currentTimeMillis());
@@ -61,13 +79,14 @@ public void setCache(final String cacheKey, final CacheWrapper<Serializable> res
6179

6280
@SuppressWarnings("unchecked")
6381
@Override
64-
public CacheWrapper<Serializable> get(final String cacheKey) {
82+
public CacheWrapper<Serializable> get(String cacheKey) {
6583
if(null == shardedJedisPool || null == cacheKey) {
6684
return null;
6785
}
6886
CacheWrapper<Serializable> res=null;
6987
ShardedJedis shardedJedis=null;
7088
try {
89+
cacheKey=appendNamespace(cacheKey);
7190
shardedJedis=shardedJedisPool.getResource();
7291
Jedis jedis=shardedJedis.getShard(cacheKey);
7392
byte bytes[]=jedis.get(keySerializer.serialize(cacheKey));
@@ -118,10 +137,11 @@ public void deleteDefinedCacheKey(String keySpEL, Object[] arguments) {
118137
* @param cacheKey 如果传进来的值中 带有 * 或 ? 号,则会使用批量删除(遍历所有Redis服务器)
119138
*/
120139
@Override
121-
public void delete(final String cacheKey) {
140+
public void delete(String cacheKey) {
122141
if(null == shardedJedisPool || null == cacheKey) {
123142
return;
124143
}
144+
cacheKey=appendNamespace(cacheKey);
125145
final AutoLoadHandler<Serializable> autoLoadHandler=this.getAutoLoadHandler();
126146
ShardedJedis shardedJedis=null;
127147
if(cacheKey.indexOf("*") != -1 || cacheKey.indexOf("?") != -1) {// 如果是批量删除缓存,则要遍历所有redis,避免遗漏。

0 commit comments

Comments
 (0)