Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Cache com acesso concorrente ao BD

Fiz um teste modificando um registro na mão (DBeaver, estou usando o MariaDB) e quando repeti a requisição Cacheable o registro veio desatualizado, pois neste caso o Spring não teve como detectar que deveria invalidar o cache. Sendo assim, nunca devemos usar cache quando há acesso ao BD por outras aplicações? Ou há meios de contornar o problema?

2 respostas
solução!

Oi Sergio,

Essa é uma discussao complicada.

Se outras aplicacoes utilizam o mesmo banco de dados, esse problema vai acontecer uma hora ou outra, sendo indicado nesses casos utilizar um cache compartilhado.

Mesmo assim nada impede de alguem alterar diretamente no banco de dados os registros.

O que pode ser feito tambem é criar uma url na API para invalidar o cache. Algo como /cache/reset, pois tem como forcar o Spring a limpar o cache manualmente. O problema é que precisa ficar chamando essa url quando for necessario limpar o cache, sendo bem dificil automatizar isso, pois precisaria saber em qual momento o cache de ver ser invalidado =/

Entendi, Rodrigo. E a solução da API de invalidação é bem interessante, desde que cada aplicação concorrente tenha a disciplina de utilizá-la a cada acesso do tipo CUD (sem o R). Como todas as aplicações tem que que ter acesso ao BD (usuário/senha), talvez seja possível impor isto aos seus desenvolvedores. Valeu!