疯狂的狮子Li
2024-01-11 fcabba1087634e2e2fe22be7c15f85858f9a6558
fix 修复 caffeine共享 key冲突导致的数据问题
已修改1个文件
18 ■■■■■ 文件已修改
ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/manager/CaffeineCacheDecorator.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/manager/CaffeineCacheDecorator.java
@@ -32,17 +32,21 @@
        return cache.getNativeCache();
    }
    public String getUniqueKey(Object key) {
        return cache.getName() + ":" + key;
    }
    @Override
    public ValueWrapper get(Object key) {
        Object o = CAFFEINE.get(key, k -> cache.get(key));
        Console.log("redisson caffeine -> key: " + key + ",value:" + o);
        Object o = CAFFEINE.get(getUniqueKey(key), k -> cache.get(key));
        Console.log("redisson caffeine -> key: " + getUniqueKey(key) + ",value:" + o);
        return (ValueWrapper) o;
    }
    @SuppressWarnings("unchecked")
    public <T> T get(Object key, Class<T> type) {
        Object o = CAFFEINE.get(key, k -> cache.get(key, type));
        Console.log("redisson caffeine -> key: " + key + ",value:" + o);
        Object o = CAFFEINE.get(getUniqueKey(key), k -> cache.get(key, type));
        Console.log("redisson caffeine -> key: " + getUniqueKey(key) + ",value:" + o);
        return (T) o;
    }
@@ -63,7 +67,7 @@
    public boolean evictIfPresent(Object key) {
        boolean b = cache.evictIfPresent(key);
        if (b) {
            CAFFEINE.invalidate(key);
            CAFFEINE.invalidate(getUniqueKey(key));
        }
        return b;
    }
@@ -80,8 +84,8 @@
    @SuppressWarnings("unchecked")
    @Override
    public <T> T get(Object key, Callable<T> valueLoader) {
        Object o = CAFFEINE.get(key, k -> cache.get(key, valueLoader));
        Console.log("redisson caffeine -> key: " + key + ",value:" + o);
        Object o = CAFFEINE.get(getUniqueKey(key), k -> cache.get(key, valueLoader));
        Console.log("redisson caffeine -> key: " + getUniqueKey(key) + ",value:" + o);
        return (T) o;
    }