Redis inicio de sesión utilizando el módulo de optimización

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;
    }

 

 

Supongo que te gusta

Origin www.cnblogs.com/zhangbochao/p/12444842.html
Recomendado
Clasificación