1. 설정
build.gradle
plugins {
id 'org.springframework.boot' version '2.7.2'
id 'io.spring.dependency-management' version '1.0.12.RELEASE'
id 'java'
}
group = 'com.redis'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-redis' // redis를 사용하기 위한 추가
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.session:spring-session-data-redis' // redis Session을 위한 추가
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('test') {
useJUnitPlatform()
}
application.yml
spring:
redis:
host: localhost
port: 6379
Springboot 2.0 이하는 아래 설정 추가
package com.example.redisserver.config;
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.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;
@Configuration
public class RedisConfig {
@Bean
public RedisConnectionFactory redisConnectionFactory(){
LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory();
return lettuceConnectionFactory;
}
@Bean
public RedisTemplate<String, Object> redisTemplate(){
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory());
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new StringRedisSerializer());
return redisTemplate;
}
@Bean
public StringRedisTemplate stringRedisTemplate(){
StringRedisTemplate stringRedisTemplate = new StringRedisTemplate();
stringRedisTemplate.setKeySerializer(new StringRedisSerializer());
stringRedisTemplate.setValueSerializer(new StringRedisSerializer());
stringRedisTemplate.setConnectionFactory(redisConnectionFactory());
return stringRedisTemplate;
}
}
Springboot Redis Session 설정
- Application 쪽에 @EnableRedisHttpSession 어노테이션 추가
@EnableRedisHttpSession
@SpringBootApplication
public class RedisServerApplication {
public static void main(String[] args) {
SpringApplication.run(RedisServerApplication.class, args);
}
}
2. Redis 연동 코드 작성
Controller
package com.redis.redisclient.controller;
import com.redis.redisclient.service.RedisSampleService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpSession;
@RestController
@RequestMapping("/redis")
public class RedisSampleController {
private final RedisSampleService redisSampleService;
public RedisSampleController(RedisSampleService redisSampleService) {
this.redisSampleService = redisSampleService;
}
@GetMapping("/session")
public String getSessionId(HttpSession session){
return session.getId();
}
@GetMapping
public void getRedisStringValue(String key){
redisSampleService.getRedisStringValue(key);
}
@PostMapping
public void setRedisStringValue(String key, String value){
redisSampleService.setRedisStringValue(key, value);
}
}
Service
package com.redis.redisclient.service;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Service;
@Service
public class RedisSampleService {
private final StringRedisTemplate stringRedisTemplate;
public RedisSampleService(StringRedisTemplate stringRedisTemplate) {
this.stringRedisTemplate = stringRedisTemplate;
}
public void getRedisStringValue(String key){
ValueOperations<String ,String> stringStringValueOperations = stringRedisTemplate.opsForValue();
System.out.println("Redis key : " + key);
System.out.println("Redis value : " + stringStringValueOperations.get(key));
}
public void setRedisStringValue(String key, String value){
ValueOperations<String, String> stringStringValueOperations = stringRedisTemplate.opsForValue();
stringStringValueOperations.set(key, value);
System.out.println("Redis key: " + key);
System.out.println("Redis value: " + stringStringValueOperations.get(key));
}
}