ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# 50.8.1 示例: 导出到Redis 如果提供一个`RedisMetricRepository`类型的`@Bean`并注解`@ExportMetricWriter`,指标将导出到Redis缓存完成聚合。`RedisMetricRepository`有两个重要参数用于配置实现这样的目的:`prefix`和`key`(传递给构造器)。最好使用应用实例唯一的前缀(比如,使用一个随机值及应用的逻辑name,这样可以关联相同应用的其他实例)。“key”用来保持所有指标name的全局索引,所以它应该全局唯一,不管这对于你的应用意味着什么(比如,相同系统的两个实例可以共享一个Redis缓存,如果它们有不同的keys)。 示例: ```java @Bean @ExportMetricWriter MetricWriter metricWriter(MetricExportProperties export) { return new RedisMetricRepository(connectionFactory, export.getRedis().getPrefix(), export.getRedis().getKey()); } ``` `application.properties`: ```text spring.metrics.export.redis.prefix: metrics.mysystem.${spring.application.name:application}.${random.value:0000} spring.metrics.export.redis.key: keys.metrics.mysystem ``` 前缀最后由应用名和id组成,所以它可以用来标识具有相同逻辑名的processes分组。 **注** 设置`key`和`prefix`都是非常重要的。key用于所有的仓库操作,并可以被多个仓库共享。如果多个仓库共享一个key(比如你需要聚合它们的时候),你通常有一个只读“master”仓库,它有一个简短的但可辨识的前缀(比如`metrics.mysystem`),还有很多只写的仓库,这些仓库以master前缀开头(比如以上示例中为`metrics.mysystem.*`)。这样从一个"master"仓库读取所有keys是相当高效的,但使用较长的前缀读取一个子集就比较低效了(比如使用一个写仓库)。 **注** 以上示例使用`MetricExportProperties`去注入和提取key和前缀,这是Spring Boot提供的便利设施,用于配置合适的默认值,你也可以自己设值。