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.
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.
Tanto la clave como el valor se serializan usando String:
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