spring에서 redis repository 사용 방법

greenTea·2023년 6월 7일
0

redis Repository

😊스프링의 redis에서도 JpaRepository와 같이 save등의 메소드를 사용할 수 있는 기능을 제공하고 있습니다.

먼저 아래와 같은 entity를 만들어줍니다.

entity

@Data
@RedisHash(value = "person")
public class Person {

    @Id
    private String id;	

    private String name;
    private int age;

    @TimeToLive
    private Long ttl = 10L;
}

🫠@RedisHash의 경우 keyprefix값입니다. @Id의 값과 합쳐져서 key값으로 저장이 됩니다.

@TimetoLive를 통해 expire 시간을 설정할 수 있습니다.

repository

public interface PersonRepository extends CrudRepository<Person, String> {
}

🥳jpa와 같이 CrudRepository를 상속 받게 하고 사용하면 됩니다.

실제 사용

@RequiredArgsConstructor
@RestController
@Slf4j
public class TestController {

    private final PersonRepository personRepository;
    
    @GetMapping("/person/{id}")
    public Person getPerson(@PathVariable String id) {
        Person person = personRepository.findById(id).get();
        log.info("person: " + person);
        return person;
    }

    @PostMapping("/person")
    public Person getPerson(@RequestBody Person person) {
        Person savedPerson = personRepository.save(person);
        log.info("savedPerson: " + savedPerson);
        return savedPerson;
    }
}

🧐jpa를 사용해보셨다면 차이가 없다는 것을 볼 수 있습니다.

검증

postman을 통해 값을 보내고 검증해 보겠습니다. 먼저 post입니다.

get요청을 통해 값을 가져와 보겠습니다.

😀아까 timetolive로 expire 시간을 설정했는데 이것이 동작하는지 확인해보겠습니다.
다시 10초가 지난후 다시 get요청을 보내보겠습니다.

🫡위에서 값이 있는지 없는지 검증하지 않고 바로 get으로 값을 가져왔기에 생긴 에러입니다. expire가 제대로 동작하는지도 검증을 해보았습니다.

profile
greenTea입니다.

0개의 댓글