redisc

源文件 主页

使用以下命令启用
redisc:github.com/miekg/redis

redisc - 使用 Redis 启用网络缓存。

说明

使用 redisc 可以缓存响应,最长 3600 秒。在多个 CoreDNS 实例共享 VIP 的设置中,Redis 缓存最有用。例如,Kubernetes 集群中的多个 CoreDNS Pod。

如果无法访问 Redis,此插件将变为 noop。可以同时使用 cacheredisc 插件,其中 cache 是 L1,redisc 是 L2 级别缓存。如果多个 CoreDNS 实例针对同一项目显示缓存未命中,则所有实例都将从上游获取相同信息并更新缓存,即这些实例之间没有(额外)协调。

如果 Redis 不可用,CoreDNS 根本不会缓存任何内容,如果已启用指标,则这将在 set_errors_total 指标中可见。

语法

redisc [TTL] [ZONES...]
  • TTL 最长 TTL(以秒为单位)。如果没有指定,将使用最长 TTL,即无错误响应为 3600,不存在拒绝响应为 1800。如果将 TTL 设置为 300:redisc 300,将缓存记录最长 300 秒。
  • ZONES 它应该缓存的区域。如果为空,则将使用配置文件中的区域。

Redis 缓存中的每个元素都根据其 TTL(最大值为 TTL)进行缓存。对于负缓存,使用 SOA 的 MinTTL 值。如果没有指定端点,将使用默认值 127.0.0.1:6379

如果想要更多控制

redisc [TTL] [ZONES...] {
    endpoint ENDPOINT
}
  • TTLZONES 如上。
  • endpoint 指定用于 Redis 的 ENDPOINT,默认值为 127.0.0.1:6379

指标

如果已启用监控(通过 prometheus 指令),则将导出以下指标

  • coredns_redisc_hits_total{server} - 缓存命中计数器。
  • coredns_redisc_misses_total{server} - 缓存未命中计数器。
  • coredns_redisc_set_errors_total{server} - 连接到 Redis 时出错的计数器。
  • coredns_redisc_drops_total{server} - 已丢弃消息的计数器。

server 标签指示处理请求的服务器,请参阅 metrics 插件了解详细信息。

示例

为所有区域启用缓存,在本地缓存,并在群集范围的 Redis 中缓存最长 40 秒。

. {
    cache 30
    redisc 40 {
        endpoint 10.0.240.1:69
    }
    whoami
}

代理到 Google 公共 DNS,仅缓存对 example.org(及以下)的响应。

. {
    proxy . 8.8.8.8:53
    redisc example.org
}

另请参阅

有关 Redis 的更多信息,请参阅 Redis 网站。已存在名为 redis 的外部插件,因此将此插件命名为 redisc,表示“redis 缓存”。

错误

单元测试很少。