Redis使用シーン:認証コードの送信回数を制限する
824 ワード
プロジェクトにはメール認証コードを送信する機能が必要であるが,毎日制限コードを送信する回数を制限する必要があり,Redisのincrコマンドで実現できる.
incrコマンド:
指定された
指定したkeyが存在しない場合、incr操作を実行する前に、その値を
戻り値は、インクリメント操作が実行された後の
コード:
Redisはシリアルで実行されるため、incrementはkey値のvalueに1を加えるたびに、5回を超えると異常を投げ出し、プロンプト操作が頻繁に行われ、そうでなければ翌日の未明まで有効時間を設定します.
incrコマンド:
指定された
key
に格納された数値に対して原子の加算1操作を行う.指定したkeyが存在しない場合、incr操作を実行する前に、その値を
0
に設定します.戻り値は、インクリメント操作が実行された後の
key
に対応する値である.コード:
long count = redisTemplate.opsForValue().increment(mobile.concat(RedisKeyConstant.SMS_COUNT),1);
if (count > 5 ) {
throw new ServiceException(" !");
} else {
//
Duration duration = Duration.between(LocalDateTime.now(), LocalDate.now().plusDays(1).atTime(0,0,0));
redisTemplate.expire(mobile.concat(RedisKeyConstant.SMS_COUNT),duration.toMinutes(),TimeUnit.MINUTES);
}
Redisはシリアルで実行されるため、incrementはkey値のvalueに1を加えるたびに、5回を超えると異常を投げ出し、プロンプト操作が頻繁に行われ、そうでなければ翌日の未明まで有効時間を設定します.