Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
📋 작업 내용
feed-crawler 내
redis-access
의존성 추가다른 부분과 동일하게
RedisConnection
인스턴스도 의존성 주입방식을 통해 관리하도록 처리 하였습니다.재사용성이 낮을것으로 생각되어,
DatabaseConnection
과 달리RedisConnection
은 별도의 인터페이스를 통해 추상화 하지 않았습니다.애플리케이션 내
RedisConnection
동작 메서드들 구현사용중이던 Redis 관련 메서드들을 메서드화 하였습니다. 대부분의 메서드 들은 실제 redis 객체에 접근해 사용하는 것과 큰 차이가 없도록 구현하였으나, 몇가지 특이사항 있는 부분들은 아래와 같습니다.
scan()
scan()
메서드는 중복 데이터를 반환할 가능성이 있기에, 매 반복문 마다 필요한 데이터를 찾아 처리해주는 로직을 직접 작성하는 것이 옳다는 판단을 내렸습니다.executePipeline()
pipeline()
메서드는ChainableCommander
이라는 객체에 접근해 레디스 명령 함수들을 실행시키는 형태로 동작들을 수행하는데, 이때 ChainableCommander 내 함수들의 목록을 받도록 구현해야 완전한 캡슐화가 가능합니다.하지만 이는 제겐 다소 복잡하게 느껴져
ChainableCommander
를 매개변수로 전달 해주고, 함수들의 모음인 콜백 함수만 받는 형태로 설계 하였습니다.그 외 실제 구현체와 차이점
실제 구현체에서는 대부분의 key값이나 데이터들을
string | number | Buffer
형태로 다양한 타입을 지원합니다. 하지만 본 PR의 커스텀 구현체에서Buffer
는 사용할일이 없다고 판단해 별도로 지원하지 않도록 하였습니다.