システム速度を向上させる、データベースの圧力を減らすために、Redisのは、プロジェクトで導入されました。
着陸検証コードの前に情報がセッションに格納されます。各要求の前に、インターセプタは、登録情報を確認するデータベースから、各ユーザの情報にアクセスしてください。これらの機能のどちらも、Redisのことで改善します。
まずRedisの、Redisのと輸入依存度、構成されたのRedisをインストールします。
このコードでは、各要求はRedisの検証コードに保存された主キーの値を持つために確認コードを取得する必要があり、同じクライアントのために、私たちは同じキーをしたい、そのため私たちは、UUIDはクッキーに保存されて使用し、コードは次のとおりです。
(METHOD =パス= "/ kaptchaを" @RequestMapping RequestMethod.GET)を 公共 ボイド getKaptcha(HttpServletResponseの応答/ * 、HttpSessionのセッション* / ){ // コードを生成する 文字列のテキスト= kaptchaProducer.createText()を、 バッファ画像イメージ = kaptchaProducer。 createImage(テキスト); // コードは、セッションに保存されます // にsession.setAttribute( "kaptcha"、テキスト); //は、コードの所有権を確認する 文字列kaptchaOwner = CommunityUtil.generateUUIDを(); クッキークッキー = 新しい新しいクッキー( "kaptchaOwner"、kaptchaOwner)。 cookie.setMaxAge( 60 ); cookie.setPath(のcontextPath); response.addCookie(クッキー); // のRedisに格納されたコード 列redisKey = RedisKeyUtil.getKaptchaKey(kaptchaOwner) 。redisTemplate.opsForValue()SET(redisKey、テキスト、 60 、TimeUnit.SECONDS); // ブラウザに出力する投影画像 response.setContentType( "画像/ PNG" ); 試み{ OutputStreamのOS = response.getOutputStream(); ImageIO.write(画像、 "PNG" 、OS ); } キャッチ(IOExceptionをE){ logger.error( "失敗応答コード:" + e.getMessage())。 } }
ユーザー情報を照会するとき、我々は唯一の到達範囲内のRedisは、データベースから取得した場合、ユーザーのクエリメソッドのIDで、ユーザがサービスを書き換える必要があり、利用者は、中のRedisにクレジットJSONにオブジェクト。ここでは、ユーザーが削除キャッシュ操作を追加するために変更したときにデータベースキャッシュとの整合性を維持するためには、それを注意してください。コードは以下の通りです
パブリックユーザーfindUserById(int型のID){ // userMapper.selectById(ID)を返します。 ユーザのユーザ= getCache(ID)。 もし(ユーザ== NULL ){ ユーザー = initCache(ID)。 } 戻りユーザ、 } プライベートユーザinitCache(INT USERID){ ユーザーユーザー = userMapper.selectById(USERID)。 ストリングredisKey = RedisKeyUtil.getUserKey(USERID)。 redisTemplate.opsForValue()セット(redisKey、ユーザー、。 3600 、TimeUnit.SECONDS)。 リターンユーザー; }