😊스프링의
redis
에서도JpaRepository
와 같이save
등의 메소드를 사용할 수 있는 기능을 제공하고 있습니다.먼저 아래와 같은
entity
를 만들어줍니다.
@Data
@RedisHash(value = "person")
public class Person {
@Id
private String id;
private String name;
private int age;
@TimeToLive
private Long ttl = 10L;
}
🫠
@RedisHash
의 경우 key의 prefix값입니다.@Id
의 값과 합쳐져서 key값으로 저장이 됩니다.
@TimetoLive
를 통해 expire 시간을 설정할 수 있습니다.
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가 제대로 동작하는지도 검증을 해보았습니다.