【问题标题】:使用 Prometheus 的 Redis 缓存指标(Spring boot)
【发布时间】:2022-01-17 13:09:59
【问题描述】:

我在 Spring Boot 服务中使用 RedisTemplate 进行缓存。现在我想通过端点执行器/prometheus 检查缓存命中/缓存未命中。但看不到缓存的缓存命中/缓存未命中。 我写的代码如下所示

    @EnableCaching
    @Configuration
    public class CachingConfiguration {
    
        @Bean
        public RedisTemplate<String, SomeData> redisTemplate(LettuceConnectionFactory connectionFactory, ObjectMapper objectMapper)                                                                               
 {
            RedisTemplate<String, SomeData> template = new RedisTemplate<>();
            template.setConnectionFactory(connectionFactory);
    
            var valueSerializer = new Jackson2JsonRedisSerializer<SomeData>(SomeData.class);
            valueSerializer.setObjectMapper(objectMapper);
            template.setValueSerializer(valueSerializer);
    
            return template;
        }
    }

现在正在执行如下操作来获取并保存到缓存中 得到:-

redisTemplate.opsForValue().get(key);

然后保存:-

redisTemplate.opsForValue().set(key, obj, some_time_limit);

我的缓存工作正常,能够保存到缓存中并获得正确的数据。 但我没有在执行器/prometheus 中看到缓存命中/未命中相关数据。 在我的 application.yml 文件中,我在下面添加了

cache:
    redis:
      enable-statistics: 'true'

【问题讨论】:

    标签: spring-boot redis prometheus spring-boot-actuator spring-data-redis


    【解决方案1】:

    我假设为了让Springboot Cache Monitoring 应用(包括命中/未命中),您需要依赖AutoConfiguration

    在您的情况下,您是自己创建 RedisTemplate,并且可能实际上并未应用 enable-statistics。

    可以去掉redistemplate创建,使用@Cacheable注解抽象吗?这样,任何受支持的 Cache 库都可以开箱即用,而无需创建 @Bean 并手动配置它。

    否则,通常如果您想手动启用缓存管理器的统计信息,则需要调用RedisCacheManager.RedisCacheManagerBuilder enableStatistics()

    https://docs.spring.io/spring-data/redis/docs/current/api/org/springframework/data/redis/cache/RedisCacheManager.RedisCacheManagerBuilder.html

    供参考:

    自动配置启用所有可用缓存的检测 启动时的实例,指标以缓存为前缀。缓存 仪器针对一组基本指标进行了标准化。 还可以使用其他特定于缓存的指标。

    指标由缓存名称和缓存名称标记 CacheManager,从bean名称派生而来。

    只有在启动时配置的缓存才会绑定到注册表。对于缓存不 在缓存的配置中定义,例如在缓存上创建的缓存 在启动阶段之后飞行或以编程方式,显式 需要注册。制作了一个 CacheMetricsRegistrar bean 可用于简化该过程。

    【讨论】:

      猜你喜欢
      • 2021-05-07
      • 2018-09-16
      • 1970-01-01
      • 2019-08-09
      • 2020-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多