트러블 슈팅) redis에 데이터를 넣어도 조회가 되지 않을 때 feat.Redis DB

2024. 11. 15. 13:00문제해결

사건

내가 하고자 했던 것
=> 내가 만든 로직 프론트랑 테스트하기

 

내가 만드려는 로직은 ?
=> 채팅을 Redis 캐시로 저장 후 
celery가 일정 시간마다 Redis에서 데이터를 가져와 메인 DB에 저장하는 걸 구현하려고 했음...!

 

사건은 여기서부터 시작됨...!

프론트에서 채팅을 입력시 확인은 되는데 레디스에 확인이 안 됨

-> 채팅이 redis로 안 넘어감 이슈

 

어라랏? 왜 안 넘어가지...?

웹소켓 연결도 잘 되어있고 도커도 잘 켜져있고... 문제가 되는 것은 없음..!

 

시도

  • 그럼 redis에서 celery 로 넘어갈 땐 잘 되나?

1. redis 컨테이너 접속

docker-compose exec redis bash
redis-cli

 

2. 직접 데이터 넣기(참고로 난 redis stream을 사용 중이다)

XADD chat_chat_room * user "test_user" message "test_message" topic "test_topic"

 

3. 조회

XREAD STREAMS chat_room 0

이렇게 하면 데이터는 확인이 됨.

하지만 셀러리 실행시 ? 셀러리는 못 찾음...

나는 보이는데.. 왜 넌 못 찾는거니... 응..?

 

 

음. 그럼 레디스에 캐시 저장도 안 되고, 

셀러리를 이용해 메인 DB에 저장하는 것도 안 되는 것인가 ..? 하하!

 


원인 분석

  • 아예 프론트에서 채팅이 들어가지 않았다. -> 이건 아님 그랬다면 다른 오류가 생겼어야 함
  • 레디스에 연결하는 주소가 잘못 되었나?

시도 2

  • 찾아보니, 데이터가 저장되는 키와 찾아오는 키가 달랐음

메시지가 redis stream에 추가 될때 room_group_name으로 메시지 추가

 

celery가 redis stream에서 메시지를 찾아올 땐 'chat_room'이라는 이름으로 찾아옴

 

내가 설정한 room_group_name 은?

chat_chat_room .... 하하! 

 

그러니까 결론은... 레디스에다간 chat_chat_room으로 설정해놓고..

celery한테는 chat_room이라는 키값을 주었던 것! 세상에 ... 

 

1차 해결

이후 room_group_name이 chat_room으로 되게끔 변경 했음!

celery가 그 위치는 인식하는 거 같았으나 ... 똑같이 데이터가 없었음. 

 

2차 해결

  • 왜 아직도 데이터 없을까? 저장하는 타입이 문제였나 ? -> 데이터 형식 맞춰주기

message, user, topic를 넘겨주는데 topic이 문제가 있나 싶어서 데이터 형식 맞춰주는 작업을 함

topic은 모델 자체를 들고오는 로직이었는데, 다 들고오는 것이 아닌, 모델 안에 있는 text 만 가져다가 저장하는 방식으로 바꿈

데이터를 프론트에서 받는 메서드에서, topic 만 모델 전체를 들고왔었음.
redis에 저장할 땐 topic.text로 선택해 문자열만 넘어갈 수 있게 함

 

음 이렇게 했는데도 잘 안 됐음....

왜 안 되지?

 

마지막 해결 

결론? 다른 곳에 저장이 되고 있었음 ...ㅎ

하하 ㅋㅋㅋㅋㅋ ㅠㅠ 

 

고양이님한테 sos 쳐서 고양이님이 내 코드 하나씩 뜯어보는데 엄청난 걸 발견 해버리심..

 

막간 지식

redis의 db는 0~15번까지 총 16개로 이루어져있음 redis의 기본 db는 0번임.

 

내가 redis에 설정해놓은 db는? 1번방...

 

celery한테 찾으라고 알려준 방 번호는? 0번방...

 

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

허무 그잡채 ... 

계속 프론트에선 1번 방에 데이터를 넣고 있었고, celery는 0번 방에서 데이터를 찾고 있었음

이게 맞나... 

 

이후 db를 0번방으로 통일 해서 해결함...ㅎ 

 

== redis를 제대로 공부하지 않고 플젝을 시작한 자의 최후 ... 

괜찮아~ 이러면서 공부하는 거지 뭐! 

하....