Redis

반응형
· Redis
이전 글(Redis를 사용해 API Response 캐시화하기(with. Spring Boot) - 1)을 보시면 개요와 구현된 클래스를 확인하실 수 있습니다. Redis를 사용해 API Response 캐시화하기(with. Spring Boot) - 1개요실무를 진행하며 개발환경에서 나타나지 않았던 문제들이 실제 운영에서는 많이 발생합니다.특히 개발환경에서 트래픽이 몰리거나 스트레스 테스트를 진행하기에는 많은 어려움들이 있었devbksheen.tistory.com이번 글에는 구현한 코드를 가지고 API에 적용하는 예제를 정리해 보겠습니다.예제 코드CacheAop전 글에서 구현한 어노테이션의 Aop를 구현한 곳입니다.@Aspect@Component@RequiredArgsConstructorpublic c..
· Redis
개요실무를 진행하며 개발환경에서 나타나지 않았던 문제들이 실제 운영에서는 많이 발생합니다.특히 개발환경에서 트래픽이 몰리거나 스트레스 테스트를 진행하기에는 많은 어려움들이 있었습니다.실제 운영 중에 트래픽이 몰렸을 때 DB connection 문제로 API의 레이턴시가 늘어나는 현상이 나타났었습니다... 이를 방지하고자 DB 환경이나 서버 환경을 스케일 업, 스케일 아웃할 수 있겠지만 백엔드로써 서버에 의존하지 말고 줄일 수 있는 부분은 모두 줄여보자 하는 생각이었습니다.그래서 ElasticCache Redis를 통해 데이터를 캐시 화하기로 마음을 먹었습니다.1. 데이터 캐시화첫 번째로 생각한 것이 대용량의 데이터 자체를 캐시화 하기였습니다.데이터 자체를 캐시화 한다면 연결된 데이터들도 구조에 맞게 설계..
· Redis
개요 Spring 프로젝트 같은 멀티 쓰레드 환경에서는 동시성 처리가 필요한 상황이 발생합니다. 서버가 1대라면 쓰레드 동기화를 통해 처리가 가능하지만, 서버가 여러대로 늘어난다면 요청이 분산되기 때문에 무용지물이 됩니다. 만약 쇼핑몰에서 재고가 1개인 상품을 2명의 회원의 동시에 주문한 경우 2번에 요청에서 상품을 조회 당시에는 재고가 1개이므로 2명의 회원 모두 주문에 성공하는 경우가 발생할 수 있습니다. ZooKeeper나 MySQL 분산락을 사용할 수 있지만 Redis를 도입하고있고, 예정이라면 Redis를 통해 분산락으로 동시성 처리가 가능합니다. 라이브러리 선택 Redis를 이용해 분산락을 사용하기 전에 고려해야 할 것이 있는데 어떠한 라이브러리를 사용할 것인가 입니다. Spring에서 제공하..
· Redis
HA(High availability)와 Sentinel Redis 서버를 한 대로만 서비스할 경우 단순히 캐시 용도로만 사용하거나 클라이언트에서 해싱해서 사용한다면 장비에 이상이 발생해 데이터 일부가 사라진다고 하더라도 문제가 없지만 유실되어서는 안 되는 데이터에 경우에는 큰 문제가 발생할 수 있습니다. 이러한 문제들을 방지하지 위해 Redis 서비스를 운영할 때는 기본적으로 마스터/슬레이브 형태로 서비스하는데, Redis 2.6 버전부터 슬레이브의 slave-read-only가 yes로 설정되어 있어서 쓰기 요청은 모두 실패하므로 슬레이브의 전환 기능은 꼭 필필요합니다. 또한 장애가 발생하더라도 제대로 운영하려면 마스터의 장애를 정확히 판별하고 슬레이브를 마스터로 승격해야 시켜야 합니다. 그다음 해당..
· Redis
Redis 복제 Redis 주요 특징 중 하나가 DBMS에서 제공하는 유사한 복제 기능이 있다는 것입니다. 복제 기능은 장애 발생 시 빠른 서버 교체나 장비 교체 등에 사용할 수 있습니다. Redis 복제 모델 Redis는 마스터/슬레이브 형태의 복제 모델을 제공합니다. 이를 통해서 마스터의 변경이 슬레이브로 전파됩니다. 한 대의 슬레이브는 오직 한 대에 마스터만 가질 수 있고 슬레이브는 다른 장비의 마스터로도 동작할 수 있습니다. Docker Compose를 이용한 Redis 마스터 슬레이브 구성하기 1. 네트워크 생성 $ docker network create redis-network --driver bridge $ docker network ls NETWORK ID NAME DRIVER SCOPE ..
· Redis
Redis는 싱글 스레드 Redis를 사용하다 보면 장애가 발생하거나 성능이 예측한대로 나오지 않는 경우가 종종 발생합니다. 이들은 모두 Redis가 싱글 스레드라는 것을 잊어버리거나 모르고 있기 때문에 발생하는 현상입니다. 싱글 스레드인 Redis는 시간이 오래 걸리는 명령어를 호출하면 그 명령어를 처리하는 동안 다른 클라이언트의 요청을 처리할 수가 없습니다. 이로인한 실무에서 흔히 하는 실수의 사례를 살펴보겠습니다. 1. 서버에서는 Keys 명령어를 사용하지 말자. Redis 명령어 중에, 현재 서버에 저장된 Key 목록을 볼 수 있는 keys 명령어가 있습니다. 모든 Key를 가져올 때는 "*"를 사용하고 특정한 문자가 들어가 있는 Key를 가져올때는 "*문자*"를 사용합니다. 127.0.0.1:6..
· Redis
1. Redis의 이해 Redis란 무엇인가? Remote Dictionary Server로 key-value 형태로 데이터를 저장하고 관리하는 서버를 의미합니다. Redis의 주요 사용자들은 이미 대규모 서비스를 운영하고 있는 큰 기업들이다. 여러가지 Red devbksheen.tistory.com 1. Redis의 이해글에서 Redis가 무엇인지 특성은 무엇인지 이해해 보았다면 이번글에는 Docker로 Redis를 실행하는 방법에 대해 정리해보겠습니다. 해당 글은 Redis를 실행하는 내용이므로 Docker에 대한 자세한 설명글은 기재하지 않았습니다. 1. Docker Image Pull docker hub에 접속해 redis를 검색해보면 버전을 확인할 수 있습니다. redis Tags | Docke..
· Redis
Redis란 무엇인가? Remote Dictionary Server로 key-value 형태로 데이터를 저장하고 관리하는 서버를 의미합니다. Redis의 여러가지 주요 특성 때문에 대규모 서비스를 운영하고 있는 큰 기업들이 주로 사용합니다. Redis의 주요 특성 1. Key-Value 스토어 기본적으로 Redis는 Key-Value 형태의 데이터 저장소입니다. 127.0.0.1:6379> set user_1 "{userName:\"bk\", birthday:\"1993-10-20\"}" OK 127.0.0.1:6379> keys * 1) "user_1" 127.0.0.1:6379> get user_1 "{userName:\"bk\", birthday:\"1993-10-20\"}" 2. 컬렉션 지원 Re..
반응형
Beekei
'Redis' 카테고리의 글 목록