mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-04-19 03:01:48 +08:00
$ bin/commit.sh Cache.put变更策略,对于替换的键值对,不清理队列
This commit is contained in:
parent
3d3a1d90ca
commit
c2641bf97b
@ -96,10 +96,19 @@ public abstract class AbstractCache<K, V> implements Cache<K, V> {
|
|||||||
if (timeout != 0) {
|
if (timeout != 0) {
|
||||||
existCustomTimeout = true;
|
existCustomTimeout = true;
|
||||||
}
|
}
|
||||||
if (isFull()) {
|
|
||||||
pruneCache();
|
final MutableObj<K> mKey = MutableObj.of(key);
|
||||||
|
|
||||||
|
// issue#3618 对于替换的键值对,不做满队列检查和清除
|
||||||
|
if (cacheMap.containsKey(mKey)) {
|
||||||
|
// 存在相同key,覆盖之
|
||||||
|
cacheMap.put(mKey, co);
|
||||||
|
} else {
|
||||||
|
if (isFull()) {
|
||||||
|
pruneCache();
|
||||||
|
}
|
||||||
|
cacheMap.put(mKey, co);
|
||||||
}
|
}
|
||||||
cacheMap.put(MutableObj.of(key), co);
|
|
||||||
}
|
}
|
||||||
// ---------------------------------------------------------------- put end
|
// ---------------------------------------------------------------- put end
|
||||||
|
|
||||||
|
23
hutool-core/src/test/java/org/dromara/hutool/core/cache/Issue3618Test.java
vendored
Normal file
23
hutool-core/src/test/java/org/dromara/hutool/core/cache/Issue3618Test.java
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
package org.dromara.hutool.core.cache;
|
||||||
|
|
||||||
|
import org.dromara.hutool.core.cache.impl.FIFOCache;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
|
public class Issue3618Test {
|
||||||
|
@Test
|
||||||
|
public void putTest() {
|
||||||
|
final FIFOCache<Object, Object> cache = CacheUtil.newFIFOCache(3);
|
||||||
|
cache.put(1, 1);
|
||||||
|
cache.put(2, 1);
|
||||||
|
cache.put(3, 1);
|
||||||
|
|
||||||
|
assertEquals(3, cache.size());
|
||||||
|
|
||||||
|
// issue#3618 对于替换的键值对,不做满队列检查和清除
|
||||||
|
cache.put(3, 2);
|
||||||
|
|
||||||
|
assertEquals(3, cache.size());
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user