-
[Redis] Redis 이용하기Backend 2024. 1. 15. 17:08
mac에 redis를 설치해서 이용하는 방법은 뒤로 갈수록 까다로워지기 때문에 docker에 redis를 설치해서 사용할 것이다.
우선 Docker Desktop을 실행한다.
그리고 docker hub에 접속해서 redis를 검색한다. Docker Official Image 라고 되어있는 redis를 클릭한다. 그럼 docker pull redis 를 Docker에 redis image를 pull하고 run 하는 방법이 네트워크로 두 개의 컨테이너를 연결하는 것보다 편하지만, redis-cli를 이용하기 위해서는 Docker에 redis 컨테이너와 local-redis 컨테이너를 network로 연결해줘야 한다.
Redis Image pull
docker image pull redis
Redis network 생성
docker network create redis-network
네트워크 확인
docker network ls
Redis 실행
docker run --name local-redis -p 6379:6379 --network redis-network -v redis_temp:/data -d redis:latest redis-server --appendonly yes
- local-redis 라는 이름으로 local:docker 간 6379 포트 연결
- 컨테이너가 참여할 docker network 인 redis-network 사용 | local의 redis_temp볼륨을 docker의 /data 경로에 연결 | redis:latest 이미지 사용하영 백그라운드에서 실행
- Redis 서버를 실행하고 영구 저장을 위해 AOF(Append-Only File) 방식을 활성화
redis-cli 접속
현재 실행중인 redis 컨테이너에 redis-cli 로 접속
docker run -it --network redis-network --rm redis:latest redis-cli -h local-redis
- -it
- 터미널을 대화형(interactive) 모드로 실행
- 사용자 입력 허용
- --network
- 컨테이너가 참여할 Docker 네트워크(redis-network)를 지정
- --rm
- 컨테이너가 종료되면 자동으로 삭제됨
- 임시 작업 용도
- redis:latest 이미지 사용하여 컨테이너 실행
- redis-cli -h local-redis
- 컨테이너 내에서 실행할 명령어
- Redis 클라이언트를 실행하고 호스트가 local-redis 인 Redis 서버에 연결
성공티비 📺
build.gradle에 redis를 추가한다.
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
application.yml
data: redis: host: localhost port: 6380
이때 주의할 점은 Redis는 인메모리 DB이기 때문에 배포할때도 host는 그대로 localhost로 해둬야 한다는 것.
RedisConfig
@RequiredArgsConstructor @Configuration @EnableRedisRepositories public class RedisConfig { private final RedisProperties redisProperties; @Bean RedisConnectionFactory redisConnectionFactory() { return new LettuceConnectionFactory(redisProperties.getHost(), redisProperties.getPort()); } @Bean public RedisTemplate<String, Object> redisTemplate() { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setValueSerializer(new StringRedisSerializer()); redisTemplate.setConnectionFactory(redisConnectionFactory()); return redisTemplate; } }
[코드 설명]
- redisConnectionFactory()
- RedisProperties로 yml에 저장한 host, port를 연결
- LettuceConnectionFactory 객체를 생성하여 반환
- LettuceConnectionFactory: Redis Java 클라이언트 라이브러리인 Lettuce를 사용해서 Redis 서버와 연결해줌
- redisTemplate()
- Redis 데이터를 저장하고 조회하는 RedisTemplate를 만들어서 반환
- setKeySerializer(), setValueSerializer()
- Redis 데이터를 직렬화하는 방식 설정
- Redis CLI를 사용해 Redis 데이터를 직접 조회할 때, Redis 데이터를 문자열로 반환해야하기 때문에 설정
- @EnableRedisRepositories: Redis를 사용한다고 명시
- RedisProperties: Redis 서버와의 연결 정보를 저장하는 객체. redis의 host와 port를 yml 파일에서 수정할 수 있으며, redisProperties.getHost(), redisProperties.getPort() 메서드를 통해 가져올 수 있음
[참고]
https://green-bin.tistory.com/69
https://green-bin.tistory.com/27
https://growth-coder.tistory.com/227
'Backend' 카테고리의 다른 글
RabbitMQ에 대하여 (0) 2024.03.03 [Redis] Redis에 대하여 (2) 2024.01.03