Na minha opinião não faz sentido usar o postgresql como cache só pela dificuldade de fazer isso, não quer dizer q n tenha como, mas imagina o cenário:

Voce tem uma aplicação bem estruturada com postgres como banco de dados e outros serviços organizados em containeres e um dockercompose para tudo isso.

No seu artigo mencionou que a desvantagem de implementar o redis seria custo, base unificada e interface familiar, vou discutir cada ponto:

  • custo: ao implementar um serviço de cache, seja integrando ao banco de dados existente(postgres) ou criando uma nova instancia para rodar o serviço (redis) no pior dos casos o postgres vai consumir a mais os mesmos recursos que a aplicação redis consumiria como serviço separado (imaginando que redis e postgresql tenham mesmo desempenho), e mais, se não redimensionar corretamente seu serviço postgres, tu pode perder performance em consultas para usar a cpu para caches, ou seja, piorar a performance no geral. com serviços separados n tem esse problema, ao subir um redis que esteja tendo 100% de uso de cpu, teu postgres n é afetado pq estao separados(pq vc é um bom desenvolvedor e n coloca serviços diferentes na mesma maquina)
  • base unificada: acho q o maior ponto nisso é que se não redimensionar sua base de dados corretamente o uso do cache pode afetar as consultas no banco. (mesmo ponto dos custos)
  • interface familiar: esse ponto é oq eu mais discordo pelo seguinte fato que o redis é uma base de dados chave-valor, ou seja, o mesmo que um dicionário no python, um vetor no php, um objeto ou dicionário em js e assim por diante. entao para quem já estudou estrutura de dados tem um conhecimento no funcionamento de um dicionário, claro que o redis adiciona algumas funalidades a mais, porém não é obrigatório entende-las visto que postgresl adiciona uma penca de coisa que quem sabe sql não sabe, e nem precisa saber para mexer no sql.

Agora o ponto que eu acho mais importante é que a complexidade envolvida para criar uma tabela cache e usa-la sem ter perda de performance no postgres pela escrita e leitura e por conta do journaling é mt grande, coisa que um dev junior poderia n saber fazer ou cometer mts erros. Oq não ocorre no redis, ele é um dicionário por si só, se tu subir uma instancia dele é só sair usando que vai ter a performance de um cache, e mais, se tu n quiser salvar nada no disco, usar só como cache puro tem uma flag pra isso e pronto, sem config, sem ter q verificar cada detalhe, só plug and play.

Minha opinião final: da pra substituir o redis pelo postgres? Sim, da mesma forma que consigo trocar o postgres por um txt e mt esforço. (Meio exagerado, mas entendam a analogia) Devo fazer? Somente se precisar fazer, tipo, mt mesmo, senão, so sobe uma instancia redis ou memcache ou dice e seja feliz.

Exatamente. A complexidade para tornar o Postgres num cache com toda a funcionalidade que o Redis traz nativamente, desde expiration até eviction, sem falar em performance, já torna a ideia ruim. Se ainda por cima falarmos em performance, a ideia é pior ainda, é trocar 6 por meia dúzia mas gastando o dobro nessa troca 😅