라이브러리
[kotlin]redis의 orm 라이브러리
탄생
2023. 7. 2. 09:18
❖ 개요
redis를 jpa처럼 사용할 수 있는 방법을 알아보려고 한다.
value를 조금 더 쉽게 관리할 수 있고 데이터 관리(DB, REDIS) 부분이 통일성 있게 관리되어 가독성 측면에서도 좋아 보인다.
❖ GIT 주소
https://bitbucket.org/basic-setup/redis-repository/src/master/
❖ 설정하기
1. dependency 추가
implementation("org.springframework.boot:spring-boot-starter-data-redis:3.1.1")
2. application.yaml 수정
- redis 접속 정보를 입력한다.
spring:
redis:
host: localhost
3. 모델 및 repository정의
- @RedisHash : Redis에 저장하고 조회하는 데 필요한 기능을 자동으로 제공합니다.
- value : redis key에 prefix 되어 해시키로 저장됩니다.
- timeToLive : Redis에서 객체의 유효기간(time-to-live)을 지정합니다. 객체가 Redis에 저장된 후 일정 시간이 지나면 자동으로 만료되고 삭제됩니다.
- @RedisHash 안에서 지원하는 어노테이션
- @ID : 객체의 식별자로 사용됩니다.
- @Indexed : 인덱스 생성을 지정하는 데 사용됩니다.
- @TimeToLive : 객체의 유효기간을 설정합니다.
RedisHash 에 글로벌로 설정하 수 있고 id별로 유효기간이 다르게 설정할 수도 있습니다.
import org.springframework.data.annotation.Id
import org.springframework.data.redis.core.RedisHash
import org.springframework.data.redis.core.TimeToLive
import org.springframework.data.redis.core.index.Indexed
@RedisHash("users")
class User(
@Id
val id: Long,
@Indexed
val name: String,
val age: Int = 0,
@TimeToLive
var expiredTime: Long = 60 * 60 * 24,
)
import net.suby.redisrepository.model.User
import org.springframework.data.repository.CrudRepository
import org.springframework.stereotype.Repository
@Repository
interface UserRepository : CrudRepository<User, Long> {
fun findByName(name: String): List<User>
}