1.값 직렬화
레디스에 refresh token을 저장하는데 계속 값이 제대로 저장이 안돼서 모든 키를 조회해보니 직렬화가 잘못됐었다.
이 문제를 해결하려면 String 타입에 맞는 직렬화 설정을 해주어야 한다고 한다.
@Repository
@RequiredArgsConstructor
public class JwtRepository {
private final RedisTemplate<String, String> redisTemplate;
public RefreshToken save(RefreshToken refreshToken){
ValueOperations valueOperations = redisTemplate.opsForValue();
valueOperations.set(refreshToken.getToken(), refreshToken.getUserId());
redisTemplate.expire(refreshToken.getToken(), JwtConstants.REFRESH_EXP_TIME, TimeUnit.MILLISECONDS);
return refreshToken;
}
public Optional<RefreshToken> findByToken(String token){
ValueOperations<String, String> valueOperations = redisTemplate.opsForValue();
String userId = valueOperations.get(token);
if(Objects.isNull(userId)){
return Optional.empty();
}
return Optional.of(new RefreshToken(token, userId));
}
}
이렇게 RedisTemplate에 타입을 지정해주니 정상적으로 들어갔다!