[Redis] problema de código confuso

Descripción del problema:

Cuando los datos almacenados usando RedisTemplate se ven en el cliente redis-cli, la clave y el valor llevarán cadenas como \xac\xad\.

razón:

Porque el método de serialización jdk se utiliza de forma predeterminada. Los siguientes son los métodos de serialización admitidos.

Los proyectos generalmente tienen un caché, y a menudo se usa redis para acceder al caché (ya no se recomienda el almacenamiento en caché de sesiones). Nuestras claves y valores se serializan en la base de datos a través del serializador proporcionado por Spring. RedisTemplate usa JdkSerializationRedisSerializer de forma predeterminada y StringRedisTemplate usa StringRedisSerializer de forma predeterminada.

Insertar descripción de la imagen aquí

Solución:

Después de que se inicie el sistema, inicialice el serializador de caché. Cambie la serialización predeterminada de redisTemplate usando JdkSerializationRedisSerializer a la serialización stringRedis.

Insertar descripción de la imagen aquí

Tanto la clave como el valor se serializan usando String:

Insertar descripción de la imagen aquí

Nota:

1. La interfaz ApplicationRunner puede implementar algunas operaciones de inicialización después de que se inicia la aplicación Springboot.

2. ¿Por qué utilizar el serializador?

Debido a que Redis almacena datos en la memoria en forma de clave-valor, la clave es una cadena simple. Parece que no hay límite de longitud para la clave, pero en principio debe ser lo más corta y legible posible. Independientemente de si es Basado en el almacenamiento persistente, la clave en el servicio estará en la memoria durante todo su ciclo de vida, por lo que reducir el tamaño de la clave puede ahorrar memoria de manera efectiva y también optimizar la eficiencia de la recuperación de claves.
   En redis, el nivel de almacenamiento del valor todavía se basa en una cadena. En el nivel lógico, puede ser cadena/conjunto/lista/mapa. Sin embargo, por razones de rendimiento, redis utiliza diferentes tipos de estructuras de datos de "codificación" para representarlos. (Por ejemplo: lista enlazada, lista zip, etc.).
   Por lo tanto, se puede entender que cuando Redis almacena datos, los convierte en una matriz de bytes [] y luego, al acceder a los datos, es necesario convertir el formato de los datos, por lo que se utilizan la serialización y la deserialización. Es necesario configurar el serializador.

Enlace de referencia: https://blog.csdn.net/u010096624/article/details/109046714
Trazabilidad del código fuente: https://blog.csdn.net/qq_16159433/article/details/121491555
Implementación de múltiples métodos: https:// blog.csdn.net/m4330187/article/details/108091447

Supongo que te gusta

Origin blog.csdn.net/m0_46459413/article/details/132044448
Recomendado
Clasificación