<aside> 💡 @RedisHash 어노테이션
</aside>
@RedisHash 애노테이션을 사용하면, 해당 애노테이션이 붙은 엔티티 클래스가 Redis의 해시(Hash) 자료구조로 매핑됩니다. 이 과정은 Spring Data JPA와 유사하지만, Redis를 데이터 저장소로 사용하는 점에서 차이가 있습니다. 또한 중요한 점은 Redis 엔티티의 ID는 자동으로 생성되지 않으며(generatedValue 이런게 없음), 애플리케이션 코드에서 수동으로 설정해야 한다는 것입니다.<aside> 💡 Redis 엔티티의 id는 자동생성이 불가능하다.
</aside>
Redis는 관계형 데이터베이스(RDBMS)와 다르게 @GeneratedValue와 같은 자동 식별자 생성 기능을 제공하지 않습니다. Redis는 NoSQL 데이터베이스로, 데이터 모델링과 식별자 관리가 RDBMS와 다릅니다. 관계형 데이터베이스에서는 주로 @GeneratedValue 애노테이션을 사용하여 식별자를 자동으로 생성하지만, Redis에서는 이를 수동으로 관리해야 합니다.
Redis에서 자동 ID 생성
@RedisHash 애노테이션이 붙은 클래스는 Redis 해시 자료구조로 매핑됩니다. Spring Data Redis는 이 클래스를 기반으로 Redis 해시에 데이터를 저장하고, 조회하고, 삭제합니다.CrudRepository 인터페이스를 상속받아 정의된 리포지토리는 기본적인 CRUD(Create, Read, Update, Delete) 작업을 자동으로 제공합니다. Spring Data Redis는 이를 통해 Redis와의 상호작용을 처리합니다.RedisTemplate을 사용하여 Redis와 상호작용합니다. RedisTemplate은 Redis 서버에 연결하고, 명령어를 실행하며, 결과를 반환합니다.import lombok.Getter;
import lombok.Setter;
import org.springframework.data.annotation.Id;
import org.springframework.data.redis.core.RedisHash;
@Getter
@Setter
@RedisHash("User")
public class User {
@Id
private String id;
private String name;
private String email;
private int age;
}