Desde que tenemos el Zimablade, he estado probando muchas cosas. Una de las mejoras que más me gustó fue lograr una caché persistente en Unbound usando Redis, para evitar los problemas que tenía cada vez que actualizaba Docker o reiniciaba el sistema. Poder decidir qué bloquear y protegerme de los molestos anuncios se ha convertido en una de las mejores herramientas que tengo en Docker. Como el Zimablade consume muy poca energía (unos 2.6W), lo dejo encendido todos los días.
Pero como tiene Linux de base, a veces quiero actualizar el sistema. Y ahí aparecía el primer problema: si había una actualización de Docker, la caché que AdGuard Home había reunido durante meses se reseteaba. Entonces todo tenía que volver a empezar de cero, y al entrar veía cómo los números estaban alterados, el tiempo de procesamiento y el response time del DNS se disparaban otra vez, porque debía rehacer todas las consultas. Son solo milisegundos, pero se notan: pasaba de abrir webs apenas hacía clic en un enlace, a tener que esperar uno o dos segundos. Quizás todo era mi imaginación, pero igual quería arreglarlo.
Además, uso Unbound para tener más privacidad, así que cuando se reiniciaba el sistema, no solo se perdía la caché de AdGuard Home, sino también la de Unbound. Me acordé de que cuando usaba Simple DNS Plus, este mantenía una caché persistente incluso tras reinicios: al volver, cargaba el archivo de caché en la RAM y seguía funcionando como si nada.

Como quería que todo lo relacionado al DNS fuera autónomo en el Zimablade, descarté usar Simple DNS Plus y opté por Unbound, que me pareció más fácil de manejar. Pero como mencioné, al reiniciar el sistema o actualizar Docker, igual se perdía la caché.
Buscando y buscando, encontré que se podía hacer una caché persistente para Unbound usando Redis. De esta forma, como Unbound es el upstream de AdGuard Home, los beneficios se heredan: Redis se convierte en la caché de Unbound, almacenada en RAM, pero también guarda un archivo en disco que se recupera tras un reinicio. Así, la caché vuelve a la RAM y no se pierde nada.

Ya pasó casi una semana desde que lo configuré y el archivo de caché ya va por los 5 MB. Hace poco reinicié el Zimablade por una actualización de Docker, y al volver, parece que sí funcionó: ya no he vuelto a tener esos retrasos molestos en las consultas DNS.

Lo único que sigue pasando (y probablemente seguirá ocurriendo) es que AdGuard Home reinicia su caché optimista cada vez, pero con la ayuda de Unbound, ya casi no importa. El tiempo de procesamiento y el de respuesta son mucho más bajos ahora.

Tener caché persistente en Unbound con Redis me ha dado justo lo que quería para mi Zimablade: estabilidad, velocidad y menos dolores de cabeza después de cada actualización. Aunque siempre habrá pequeños detalles por pulir, saber que ahora mis consultas DNS no empiezan de cero me deja mucho más tranquilo.
