有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Guava LoadingCache如何处理备份存储中不存在的密钥

我正在使用CacheBuilderLoadingCache实现数据库数据的内存缓存

假设客户机在缓存中查询备份存储中不存在的项。我想让客户端知道没有找到指定密钥的数据。处理这个问题的最佳方法是什么

  • 在缓存中存储表示“无数据”的特殊值
  • 在缓存中不存储任何内容并引发异常
  • 还有其他想法吗

共 (1) 个答案

  1. # 1 楼答案

    我总是用下面的方法解决这个问题

    interface KeyValueService<K,V> {
        V get(K key);
    }
    
    class CachingKeyValueService<K,V> {
        Cache<K,Optional<V>> cache;
        V get(K key) {
            return cache.get(key).orNull();
        }
    
    }
    

    理想情况下,您可以将KeyValueService的接口更改为始终返回可选,但有时这是不可能的

    您可以使用权重来生成所有可选项。缺席的参考资料将很快被逐出