Redis, 그리고 WebSocket

개발세발·2024년 5월 10일

Redis를 검색하다

프로젝트를 진행 중에 실시간 채팅 기능에 대해서 얘기가 나왔고, 이와 관련한 기능들을 찾아보고 있었지요.
그러던 중 팀원 분이 메시지를 바로 DB에 저장하지 말고 Redis에 저장하는 것이 어떠냐고 하셔서..부랴부랴 Redis가 뭔지, 어떤 원리를 생각하면서 Redis를 사용하자고 하신건지...열심히 찾아보았다.

Redis

  • Remote Dictinary Server의 약어로, 외부에 사전 형태로 저장하는 서버를 의미한다!
  • Redis는 key:value구조로 이루어져 있는데, 이게 왜 좋을까? 탐색 시간이 어마무시하게 짧아진다.(O(1)로 짱 빨리 찾을 수 있음.)
  • 그리고 요거는 인메모리 즉, 메모리에 저장하는 NoSQL DBMS이다.
  • 또한 서버와 DB 사이에 배치시켜 캐시를 저장하는 저장소로 사용할 수 있다.(a.k.a jpa의 영속성 컨텍스트..?)
  • 다양한 자료구조가 있는데, 요것들의 성능이 너무 좋은 것 같아 보입니다 하하

WebSocket

그렇다면 웹소켓은 무엇일까요? 간단하게 살펴보았습니다.

  • Http 요청의 단점: 단방향 통신(요청-응답), 요청이 있어야만 응답을 줄 수 있다. 그래서 여러 정보를 주기적으로 받아와야 하는 실시간 데이터의 경우, 너무 많은 요청과 응답이 생겨 비효율적이에요
  • 이를 해결하기 위한 방법:
    1.Server-Sent Event: http 통신을 중단하지 않고 계속 유지- 근데 이거는 서버만 일방적으로 응답을 보내줄 수 있고, 클라이언트는 듣기만 가능함.
    2. WebSocket: TCP 연결 기반으로 양방향 통신이 가능해져요.
    클라이언트가 웹소켓 통신 요청을 보내면 서버가 승인하면 웹소켓을 열 수 있어요.

그래서 뭘 하려고 했냐

채팅 시스템을 만들고자 합니다!!!

어떻게 활용해야 할지에 대해서는 아직 공부가 더 필요하여 추후 다른 글에서 다시 다루겠습니다...

아자아자 화이팅!

0개의 댓글