Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- formik
- UnsupportedOperationException
- 핀포인트
- LPOS
- save/update
- intellij
- OIDC
- Ingress Controller Fake
- ㅉ때
- fake jwt
- 월급루팡 일지
- 노드간 통신
- 더티체킹
- jsonMarshaller
- RedirectService
- R2DBC Paging
- 스프링Boot 개발환경
- Loki 로그
- pinpoint 2.5.3
- 논블록킹 성능
- pinpoint
- hbase 저장공간 설정
- reids
- Armeria
- 플루터
- jar 배포
- nodeSelector
- nGinder
- 개발 어렵당.ㅠ
- 애자일 싫타
Archives
- Today
- Total
대머리개발자
R2DBC Redis... 본문
728x90
끝도 없네.. 얻어 걸려야 하는데.... 젭압!!
리액티브 스타일(?) 맞춰 코딩을 하고 있는 건지 모르겠다.
일단 되는대로 코딩하고 있는데 이것이 바로 리액티브 스타일이 아니겠는가?
스트림 = 물 흐름대로 = 되는대로 ㅋㅋ 개똥 철학!!
그저 흘러 가자!!
아직까지 라이브러리가 완벽하게 지원되지 않는것 같다.
실제 인터페이스는 존재 하지만 사용해 보면 오류가 발생한다.
reactiveRedisOperations.opsForValue().getAndDelete( "1fb78c01-4a35-4751-bf24-3dad11b984f1")
//ㅜㅜ
nested exception is io.lettuce.core.RedisCommandExecutionException: ERR unknown command 'GETDEL'
내가 잘못 사용하고 있는건가. ㅠ? 기본적인 인터페이스 제외하고는 다 안되네.. 일단 PASS
## 테스트 코드
ServiceUtil.getRedisService().getTest( "client:100000001").flatMap( data-> {
// logic..
return Mono.just(data);
}).subscribe();
레디스 가져온 정보가 없을 때 즉, NULL 일 때 flatMap은 흘러가지 않는다.
기본적으로 생각해보면 흘러가는 내용물이 없다면? 고인물이냐? ...ㅈㅅ
빈 내용물이라도 채워서 흘려 보내줘야 한다.
public Mono<String> getTest(String key){
return reactiveRedisOperations.opsForValue().get(key)
.switchIfEmpty(Mono.defer(()-> Mono.error(new DefinedException("redis info null : " + key))));
}
switchIfEmpty 녀석을 통해서 빈 객체든 혹은 오류객체든 흘려 보내도록 하자! 또한 녀석의 비용이 비싼 관계로 무조건 흘려 보내는것이 아닌 조건에 맞을때만 흘려 보낼 수 있도록 defer()로 감싸 안아준다!
reactor.core.Exceptions$ErrorCallbackNotImplemented: com.oauth.common.DefinedException: redis info null : client:100000001
Caused by: com.oauth.common.DefinedException: redis info null : client:100000001
근데 보통 레디스에 없으면 뭐하뇨? DB를 가야제~ DB쪽으로 스트림을 꽂아 준다..
코드의 구조는 조금더 고민해봐야 할 듯...
결론.. 난해하다. 하지만 곧 익숙해진다!! ㅎㅎ
※ 스트림이 NULL이면 구독할 필요가 없겠지?? 그래서 처리 과정에 중에 NULL 나오면 NULL 객체라도 만들어서 보내야 구독이 된다. NULL에 대한 처리가 없다면 구독 할수가 없다.
얼렁 성능 테스트 마무의리 해야 하는데. ㅠ
728x90
'개발이야기 > 자봐' 카테고리의 다른 글
boot azure-key-vault (0) | 2023.02.21 |
---|---|
r2dbc Mysql and Maria (0) | 2023.02.19 |
JPA + queryDSL 적용기(?) (0) | 2022.04.08 |
스프링 Boot Jar 배포 시 리소스 못 찾는 이슈 (0) | 2021.10.29 |
스프링 Boot - MessageSource 적용 (0) | 2021.08.28 |