<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;
}