Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring缓存命中标志/指示器_Spring_Ehcache_Spring Cache - Fatal编程技术网

Spring缓存命中标志/指示器

Spring缓存命中标志/指示器,spring,ehcache,spring-cache,Spring,Ehcache,Spring Cache,我正在使用SpringCache通过@Cacheable缓存一些对象。然而,其中一个要求要求我能够知道返回的对象是来自缓存命中还是标准调用。是否有任何设置的标志或指示器可用于检查 我曾经看到过关于缓存命中记录的问题,只要有缓存命中,但这对我的情况并没有真正的帮助。我目前正在将Spring Cache与Simple Provider一起使用,并愿意使用任何能够做到这一点的外部缓存管理器。是的,我们可以使用标志来知道它是缓存命中还是缓存未命中(直接调用REST调用或数据库调用) 使用@Cacheab

我正在使用SpringCache通过@Cacheable缓存一些对象。然而,其中一个要求要求我能够知道返回的对象是来自缓存命中还是标准调用。是否有任何设置的标志或指示器可用于检查


我曾经看到过关于缓存命中记录的问题,只要有缓存命中,但这对我的情况并没有真正的帮助。我目前正在将Spring Cache与Simple Provider一起使用,并愿意使用任何能够做到这一点的外部缓存管理器。

是的,我们可以使用标志来知道它是缓存命中还是缓存未命中(直接调用REST调用或数据库调用)

使用
@Cacheable
,它总是首先检查缓存,然后再执行方法,如果在缓存中找到,它将跳过方法执行,因为
@CachePut
的工作方式略有不同,它将执行一个修改过的方法并更新缓存,因此它将始终错过缓存

例如:

    private volatile boolean cacheMiss = false;

    public boolean isCacheMiss(){
        boolean cacheMiss = this.cacheMiss;
        this.cacheMiss = false; //resetting for next read
        return cacheMiss;
    }

    protected void setCacheMiss(){
        this.cacheMiss = true;
    }

  
    @Cacheable("Quotes")
    public Quote requestQuote(Long id) {
        setCacheMiss();
       //REST CALL HERE
        return requestQuote(ID_BASED_QUOTE_SERVICE_URL,
                      Collections.singletonMap("id", id));
    }
cacheMiss
变量提供状态,无论它是否来自缓存

这里讨论的是底层缓存提供程序GemFire。您可以使用任何此类缓存提供程序