Skip to content

Commit

Permalink
[etc] redis set up
Browse files Browse the repository at this point in the history
  • Loading branch information
dojinyou committed Nov 19, 2023
1 parent ee4f15d commit b899196
Show file tree
Hide file tree
Showing 9 changed files with 115 additions and 1 deletion.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -173,3 +173,6 @@ gradle-app.setting
### Gradle Patch ###
# Java heap dump
*.hprof


redis/
1 change: 1 addition & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ dependencies {

// spring
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("org.springframework.boot:spring-boot-starter-data-redis")
implementation("org.springframework.boot:spring-boot-starter-validation")
implementation("org.springframework.boot:spring-boot-starter-web")

Expand Down
16 changes: 16 additions & 0 deletions compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,24 @@ services:
DB_PASSWORD: local
ports:
- "18080:8080"
restart: always
depends_on:
- db
- cache

cache:
image: redis:7.0-alpine
container_name: redis_cache
ports:
- "16379:6379"
volumes:
- ./redis/data:/data
- ./redis/conf/redis.conf:/usr/local/conf/redis.conf
labels:
- "name=redis"
- "mode=standalone"
command: redis-server /usr/local/conf/redis.conf
restart: always

volumes:
postgres:
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.mjucow.eatda.common.config

import com.mjucow.eatda.common.properties.RedisProperties
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.data.redis.connection.RedisConnectionFactory
import org.springframework.data.redis.connection.RedisStandaloneConfiguration
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory
import org.springframework.data.redis.core.RedisTemplate
import org.springframework.data.redis.serializer.StringRedisSerializer

@Configuration
class RedisConfiguration(
private val redisProperties: RedisProperties
) {
@Bean
fun redisConnectionFactory(): RedisConnectionFactory {
return LettuceConnectionFactory(
RedisStandaloneConfiguration(redisProperties.host, redisProperties.port)
)
}

@Bean
fun redisTemplate(redisConnectionFactory: RedisConnectionFactory): RedisTemplate<String, Any> {
return RedisTemplate<String, Any>().apply {
connectionFactory = redisConnectionFactory
setDefaultSerializer(StringRedisSerializer())
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.mjucow.eatda.common.properties

import org.springframework.boot.context.properties.ConfigurationPropertiesScan
import org.springframework.context.annotation.Configuration

@Configuration
@ConfigurationPropertiesScan(basePackages = ["com.mjucow.eatda.common.properties"])
class PropertiesConfiguration
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.mjucow.eatda.common.properties

import org.springframework.boot.context.properties.ConfigurationProperties

@ConfigurationProperties(prefix = "spring.data.redis")
data class RedisProperties(
var host: String = "",
var port: Int = -1,
)
10 changes: 10 additions & 0 deletions src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,12 @@ spring:

jooq:
sql-dialect: postgres

data:
redis:
host: localhost
port: 16379

---

spring:
Expand All @@ -63,5 +69,9 @@ spring:
validation-timeout: 1000
max-lifetime: 600000

data:
redis:
host: ${REDIS_URL}

jooq:
sql-dialect: postgres
32 changes: 32 additions & 0 deletions src/test/kotlin/com/mjucow/eatda/domain/AbstractCacheTest.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.mjucow.eatda.domain

import com.mjucow.eatda.common.config.RedisConfiguration
import com.mjucow.eatda.common.properties.PropertiesConfiguration
import com.mjucow.eatda.common.properties.RedisProperties
import org.springframework.boot.test.autoconfigure.data.redis.DataRedisTest
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase
import org.springframework.boot.testcontainers.service.connection.ServiceConnection
import org.springframework.context.annotation.Import
import org.springframework.test.context.ActiveProfiles
import org.testcontainers.containers.GenericContainer
import org.testcontainers.junit.jupiter.Container
import org.testcontainers.junit.jupiter.Testcontainers

@Import(value = [
RedisProperties::class,
RedisConfiguration::class,
PropertiesConfiguration::class,
])
@DataRedisTest
@Testcontainers
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@ActiveProfiles("test")
abstract class AbstractCacheTest {
companion object {
@Container
@ServiceConnection
val REDIS_CONTAINER = GenericContainer("redis:7.0-alpine")
.withExposedPorts(6379)
.withReuse(true)
}
}
7 changes: 6 additions & 1 deletion src/test/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,9 @@ spring:
datasource:
url: jdbc:tc:postgresql:///test-database

logging.config: classpath:logback-test.xml
data:
redis:
host: localhost
port: 6379

logging.config: classpath:logback-test.xml

0 comments on commit b899196

Please sign in to comment.