라이브러리

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