슬랙과, 디스코드처럼 실시간 사용자상태 (접속중이면 초록불, 자리비움이면 노란불, 오프라인이면 검정불)이 들어오는 기능을 만들고싶었는데 사용자 상태라는게 계속바뀌고 중요한정보가 아닌데 DB에 계속 저장되는게 무겁고 꺼내오는거조차 시간이 걸릴수있다 그럼 인메모리 NoSql 레디스를 사용해보자
groovy
복사편집
// build.gradle.kts
implementation("org.springframework.boot:spring-boot-starter-data-redis")
yaml
복사편집
spring:
redis:
host: localhost
port: 6379
java
복사편집
@Configuration
public class RedisConfig {
@Bean
public RedisConnectionFactory redisConnectionFactory() {
return new LettuceConnectionFactory();
}
@Bean
public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory cf) {
return new StringRedisTemplate(cf);
}
}
목적: 세션을 쓰지 않고 Redis에 사용자 프로필/토큰 캐싱
예시
java
복사편집
// 로그인 성공 후
stringRedisTemplate.opsForValue()
.set("login:" + userId, userDtoJson, 30, TimeUnit.MINUTES);
키 네이밍: login:{userId}
TTL: 30분
workspace:{wsId}:presence
(ZSet)