redis 5

Springboot에서 외부 Redis에 값을 넣고 빼보자(feat.pipeline, Spring boot 3.0)

코드는 https://github.com/RyooChan/redis-pipeline/tree/main 여기서 확인 가능 Springboot에서 외부 Redis에 값을 넣고 빼보자(feat.pipeline, Spring boot 3.0) 해당 테스트를 하기 전에 Redis는 localhost가 아닌 외부에 존재한다고 가정한다. (외부 레디스를 사용하면 네트워크 지연 시간이 발생하게 될 것이다.) 알다시피 레디스는 굉장히 속도가 빠르다. 그렇지만 레디스와 서버는 TCP 네트워크 모델을 기반으로 통신한다. 이게 무슨 뜻일까... 하면, redis와 서버간의 통신 과정에서 TCP 3-way handshake를 따르고, 여러 번 통신을 하면 결국 속도에서 손해를 볼 수밖에 없다는 것이다. 한번 이를 테스트해 보자..

레디스를 로컬이 아닌 외부에 두는 이유

레디스를 로컬이 아닌 외부에 두는 이유 보통 우리가 공부할 때에는 레디스를 로컬에서 실행한다. 근데 회사를 가면 열에 아홉은 외부 레디스를 쓸 것이다. 로컬에서 실행할때 얻을 수 있는 장점은 빠른 속도 외부 레디스의 경우 통신 과정이 필요하므로 레이턴시가 걸리게 된다. 개발 및 테스트 개발 환경에서의 접근과 설정, 테스트가 용이하다. 정도일 것이다. 단점은 무엇일까?? 어쩌면 뻔하다고 생각될 수 있지만 다음과 같다. 데이터 손상 로컬에 레디스가 존재하는 경우 데이터가 손실될 염려가 더 크다. ex) 서버가 중단되는 경우 데이터의 손상 또 외부에 두게 되면 Redis자체적으로 제공되는 스냅샷을 백업하거나 디스크 로그에 저장하는 등등을 통해 데이터를 조금 더 편하게 저장 가능하다. 확장성 결국 로컬 컴퓨터에..

캐시 전략

Redis의 캐싱 전략 개발을 할 때에 Redis를 통해서 값을 캐싱시켜 둔다면, 더 빠르게 값들을 처리할 수 있다. 이 이유를 간단하게 말하자면 DB를 통해 값을 가져오는 것 보다 캐시에 있는 데이터를 사용하면 성능면에서 더 빠르기 때문이다. 그렇기 때문에 cache miss(캐시된 데이터가 없어서 DB를 통해 해당 값을 가져온다.)를 적게 하고 cache hit(캐시된 데이터에서 바로 값을 가져옴)를 최대한으로 해야 한다. 또한 캐시는 RAM데이터를 사용하는데, 이게 데이터가 크지 않기 때문에 이를 잘 관리해야 한다. 즉 최대한 DB서버를 통하지 않고 Redis를 통해 값을 받을 수 있도록 하기 Redis의 크기를 효율적으로 관리하기 를 해내야 할 것이다. 이를 위한 전략들을 살펴보도록 한다. 읽기 ..

spring boot에서 redis를 사용한 동시성 이슈 처리

Redis를 활용해서 동시성 이슈를 방지하는 두 가지 방법이 있다. Lettuce setnx 명령어를 활용하여 분산락 구현 set if not exist의 줄입말이다. key와 value를 set할 때 기존의 값이 없을 때에만 set하기 spin lock 방식 락을 사용하는 쓰레드가 이걸 사용할 수 있는지 매번 시도하는 방식 retry 로직을 개발자가 직접 구현해야 한다. Redisson pub-sub 기반으로 Lock 구현 제공 앞선 쓰레드가 자신이 끝나면 다음 쓰레드에 접근하라고 할려줌 Lettuce 요런 식으로 lock을 사용하고 setnx를 써서 하면 이전에 만들어둔게 없음 1 -> 만들어짐 이전에 만들어둔게 있음 0 -> 안됨 이전에 있던걸 지우고 다시하면 잘 되는것도 확인 가능 구현이 간단하다..

Redis - cache, persistence 기초

Redis란? In-memory Data structure Store BSD 3 License Open Source 레디스를 쓸 때에 마음대로 코드를 수정하거나, 숨기거나 할 수 있다. 추가로 Redis module은 느낌이 다른데, 이건 Redis Enterprise를 제공해주는걸로 얘는 변경시 코드를 공개해야한다. Support Data Structures String, set, sorted-set, hashed, list Hyperloglog 유일한 원소 개수 추정에 사용되는 알고리즘. 속도가 매우 빠르고 오차가 적다고 한다. bitmap geospatial index 나에게서 얼마만큼의 거리에 있는 데이터들을 가져온다. stream Only 1 Committer 레디스 소스를 고칠 수 있는 사람은..