Para reducir la presión de la base de datos, mejorar la velocidad del sistema, Redis introdujo en el proyecto.
Antes de aterrizar verificación de la información de código se almacena en la sesión. Antes de cada solicitud, el interceptor verificará la información del registro, diríjase a cada información de usuario de la base de datos. Ambas características mejoran por Redis.
En primer lugar instalar Redis, Redis y dependencia de las importaciones, Redis configurados.
Para que este código, cada solicitud debe obtener un código de verificación que tiene un valor de clave principal almacenada en Redis de verificación de código, para el mismo cliente que queremos la misma clave, por lo tanto, utilizamos el UUID guarda en una cookie, código es el siguiente:
@RequestMapping (path = "/ kaptcha", method = RequestMethod.GET) pública vacío getKaptcha (HttpServletResponse respuesta / * , HttpSession sesión * / ) { // 生成验证码 cadena de texto = kaptchaProducer.createText (); Imagen BufferedImage = kaptchaProducer.createImage (texto); // El código se almacena en la sesión // session.setAttribute ( "kaptcha", texto); // códigos de casa de Cadena kaptchaOwner = CommunityUtil.generateUUID (); Galleta Galleta = nueva Cookie ( "kaptchaOwner" , kaptchaOwner); cookie.setMaxAge ( 60 ); cookie.setPath (contextPath); response.addCookie (cookie); // Los códigos almacenados en la Redis cadena redisKey = RedisKeyUtil.getKaptchaKey (kaptchaOwner); redisTemplate.opsForValue () define (redisKey, texto,. 60 , TimeUnit.SECONDS); // La repentina salida de imagen al navegador response.setContentType ( "image / png" ); el try { OutputStream OS = response.getOutputStream (); ImageIO.write (imagen, "png" , vía oral); } Catch (IOException e) { logger.error ( "códigos de respuesta fallidos:" + e.getMessage ()); } }
Al consultar la información del usuario, sólo tenemos que reescribir el servicio por parte del usuario de Identificación del método de la consulta del usuario, si Redis en el alcance, para tomar de la base de datos y los objetos de usuario en JSON acreditado a Redis en. Aquí hay que señalar que, con el fin de mantener la coherencia con la caché de base de datos cuando el usuario cambia para agregar la operación de borrado de caché. Código es el siguiente
pública del usuario findUserById ( int id) { // volver userMapper.selectById (id); Usuario usuario = getCache (id); si (usuario == nula ) { usuario = initCache (id); } volver usuario; } privada del usuario initCache ( int ID de usuario) { Usuario usuario = userMapper.selectById (userId); Cadena redisKey = RedisKeyUtil.getUserKey (userId); redisTemplate.opsForValue () conjunto (redisKey, usuario,. 3600 , TimeUnit.SECONDS); volver usuario; }