es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Eliminar caché de Spring Boot Redis Cache con múltiples claves.

Tengo un método que guarda en caché.

@GetMapping("/orders")
@Cacheable(value = "List<order>", key = "{#customerName+'s orders', #page, #size}")
public List<order> findOrders(@RequestParam("customerName") String customerName,
                              @RequestParam(name = "page") int page,
                              @RequestParam(name = "size") int size) {
...

Y quiero eliminar esta caché después de llamar a este método.

@PostMapping("/order")
@CacheEvict(value = "*", key="{#makeOrderDTO.customerDTO.name+'s orders', '', 'regex:*'}")
public Order makeOrder(@RequestBody MakeOrderDTO makeOrderDTO) {

Tengo un problema, quiero eliminar todas las páginas en caché para los clientes, pero no puedo eliminar solo un tipo de página. Por lo tanto, necesito eliminar los clientes con todos los tamaños y números de página. Tal vez haya alguna funcionalidad como

@PostMapping("/order")
@CacheEvict(value = "*", key="{#makeOrderDTO.customerDTO.name+'s orders', 'regex:*', 'regex:*'}")
public Order makeOrder(@RequestBody MakeOrderDTO makeOrderDTO) {

o

@PostMapping("/order")
@CacheEvict(value = "*", key="{#makeOrderDTO.customerDTO.name+'s orders', 'any', 'any'}")
public Order makeOrder(@RequestBody MakeOrderDTO makeOrderDTO) {

Gracias de antemano.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para eliminar todas las páginas almacenadas en caché para los clientes, puedes usar el siguiente código en la anotación @CacheEvict:

    @CacheEvict(value = "List<order>", allEntries = true, key = "#customerName + ' orders'")
    

    Esto eliminará todas las entradas almacenadas en caché para el nombre de cliente especificado y el valor de caché “List“. La opción “allEntries = true” elimina todas las entradas para la caché dada, por lo que no es necesario utilizar expresiones regulares u otras opciones de expresión regular. La clave incluye solo el nombre del cliente, por lo que eliminamos todas las páginas almacenadas en caché para ese cliente en particular.

Comments are closed.