Skip to content

Commit 487f45f

Browse files
authored
Merge pull request #15 from xiaomingfor/master
fix:修改全局默认过期时间(默认时间为0)redisTemplate报错问题;增加全局空置过期时间配置
2 parents 3ae0f39 + 34fa27d commit 487f45f

File tree

3 files changed

+19
-5
lines changed

3 files changed

+19
-5
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
</parent>
1111
<groupId>com.pig4cloud.plugin</groupId>
1212
<artifactId>multilevel-cache-spring-boot-starter</artifactId>
13-
<version>0.0.7</version>
13+
<version>0.0.8</version>
1414
<name>multilevel-cache-spring-boot-starter</name>
1515
<description>support L1 caffeine and L2 redis cache</description>
1616
<url>https://pig4cloud.com</url>

src/main/java/com/pig4cloud/plugin/cache/properties/RedisConfigProp.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ public class RedisConfigProp {
2020
*/
2121
private Duration defaultExpiration = Duration.ZERO;
2222

23+
/**
24+
* 全局空值过期时间,默认和有值的过期时间一致,一般设置空值过期时间较短
25+
*/
26+
private Duration defaultNullValuesExpiration = null;
27+
2328
/**
2429
* 每个cacheName的过期时间,优先级比defaultExpiration高
2530
*/

src/main/java/com/pig4cloud/plugin/cache/support/RedisCaffeineCache.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ public class RedisCaffeineCache extends AbstractValueAdaptingCache {
3636

3737
private final Duration defaultExpiration;
3838

39+
private final Duration defaultNullValuesExpiration;
40+
3941
private final Map<String, Duration> expires;
4042

4143
private final String topic;
@@ -50,6 +52,7 @@ public RedisCaffeineCache(String name, RedisTemplate<Object, Object> stringKeyRe
5052
this.caffeineCache = caffeineCache;
5153
this.cachePrefix = cacheConfigProperties.getCachePrefix();
5254
this.defaultExpiration = cacheConfigProperties.getRedis().getDefaultExpiration();
55+
this.defaultNullValuesExpiration = cacheConfigProperties.getRedis().getDefaultNullValuesExpiration();
5356
this.expires = cacheConfigProperties.getRedis().getExpires();
5457
this.topic = cacheConfigProperties.getRedis().getTopic();
5558
}
@@ -115,9 +118,9 @@ public ValueWrapper putIfAbsent(Object key, Object value) {
115118
}
116119

117120
private void doPut(Object key, Object value) {
118-
Duration expire = getExpire();
121+
Duration expire = getExpire(value);
119122
value = toStoreValue(value);
120-
if (!expire.isNegative()) {
123+
if (!expire.isNegative() && !expire.isZero()) {
121124
stringKeyRedisTemplate.opsForValue().set(getKey(key), value, expire);
122125
}
123126
else {
@@ -178,9 +181,15 @@ private Object getKey(Object key) {
178181
StringUtils.isEmpty(cachePrefix) ? key.toString() : cachePrefix.concat(":").concat(key.toString()));
179182
}
180183

181-
private Duration getExpire() {
184+
private Duration getExpire(Object value) {
182185
Duration cacheNameExpire = expires.get(this.name);
183-
return cacheNameExpire == null ? defaultExpiration : cacheNameExpire;
186+
if (cacheNameExpire == null) {
187+
cacheNameExpire = defaultExpiration;
188+
}
189+
if (value == null && this.defaultNullValuesExpiration != null) {
190+
cacheNameExpire = this.defaultNullValuesExpiration;
191+
}
192+
return cacheNameExpire;
184193
}
185194

186195
/**

0 commit comments

Comments
 (0)