Redis
-
Redis는 왜 다른 DB보다 빠를까개발 2023. 3. 16. 16:20
Redis 는 크게 4가지 측면에서 MySQL 같은 전통 RDB와 차이점이 있다. In Memory Storage 다른 데이터베이스는 disk 에다가 데이터를 저장하고 읽는 반면 레디스는 데이터를 메모리에 저장한다. 디스크에 비해 메모리는 입출력 속도가 훨씬 빠르다. Data Structure 레디스는 string, hash, list, set, sorted set 으로 작업하기 위해 만들어졌다. 이 데이터 구조는 성능에 효율적이고 레디스가 읽고, 쓰고, 조회하는 것을 빠르게 한다. 그리고 자료 구조를 효율적으로 이용해서 레디스는 메모리 공간을 절약하고 동작에 시간 복잡도를 줄인다. 실제로 레디스는 리스트의 push/pop을 크기와 상관 없이 O(1) 시간에 처리할 수 있다. 그리고 레디스는 교집합이든 ..
-
socketio redis adapter개발 2023. 1. 6. 17:49
Publish Subscribe Pattern publisher가 subscriber에게 메시지를 바로 보내는게 아니고, publisher와 subscriber 사이에 이벤트 채널을 두는 형태다. publisher는 subscriber 에 대한 정보를 모른체 이벤트 채널에 메시지를 보내면 메시지는 분류화(categorized)돼서 이벤트 채널에 저장된다 저장된다. subscriber도 publisher에 대한 존재를 모른체 관심있는 메시지만 이벤트 채널로부터 수신한다. publisher와 subscriber 사이의 디커플링된 관계는 확장성을 용이하게 한다. Redis Pub/Sub Mechanism redis 는 publish/subscribe 에서 이벤트 채널의 역할을 한다. 외부 애플리케이션에서 re..
-
멀티 서버 환경에서 Socket.io 사용하기개발/nodejs 2021. 11. 29. 20:00
서버 인스턴스가 하나로 이뤄진 환경에서는 클라이언트와 서버간의 소켓 통신은 그림 1 처럼 하나의 서버에서 모든 소켓 세션을 관리하는 형태로 구현된다. Server1 이 클라이언트와 연결된 모든 소켓 세션을 갖고 있기 때문에 모든 클라이언트에게 Event를 전달할 수 있다. 그런데 그림 1에서 서버를 하나 늘리면 클라이언트와 서버간의 소켓 통신은 그림 2처럼 된다. 클라이언트는 최초에 접속한 서버에 대해서 소켓 세션을 유지하게 되므로 Server1와 Server2 모두 별도의 소켓 세션을 갖게 된다. 그림 2와 같은 형태에서 Server1 에서 모든 클라이언트에게 직접 이벤트를 보내는 것은 불가능하다. 그림 3에서도 알 수 있듯이 Server1과 Client 2 간의 소켓 연결 세션이 없으므로 Server..