본문 바로가기
Node.js

Node.js로 Redis 연결

by Mecodata 2023. 9. 5.
const express = require("express");
const app = express();
const redis = require("redis");
const http = require("http");
const server = http.createServer(app);
const { Server } = require("socket.io");
const Subscriber = redis.createClient({url: "redis://redis-server:6379"});

// Redis 연결 성공 시
Subscriber.on('connect', () => {
    console.info('Redis Sub connected!');
});

// Redis 연결 실패 시
Subscriber.on('error', (err) => {
    console.error('Redis Sub Client Error', err);
});

// Redis 연결(connect 이벤트 호출)
Subscriber.connect().then(); 

// Socket 통신 설정
const io = new Server(server);
  
// 소켓 연결 처리(connection은 연결에 대한 기본 설정)
io.on("connection", (socket) => {
    console.log(`Socket Connected`); 
    
    // 소켓 연결 해제
    socket.on("disconnect", () => {
       console.log("Socket Disconnected");
    });
});

const channel = "topic3";

// Subscriber: 특정 채널을 구독하고 메시지를 처리
function subscribeToChannel(channel) {
    Subscriber.subscribe(channel, (message) => {
        console.log(`message : ${message}`);
        io.emit("message", message);
    });
}

subscribeToChannel(channel);

// 포트번호 3000으로 서버 실행
server.listen(3000, () => {
  console.log("Server Start");
});

※ createClient() 메소드를 사용하여 Redis 서버 연결을 시도할 시 주의할 점 

- Docker를 통해 컨테이너로 실행 ⇒ url 파라미터를 이용 (“redis://호스트:포트번호”)

ex) redis.createClient( {url: "redis://redis-server:6379"} )

- 로컬에서 실행 ⇒ host, port 파라미터를 이용

ex) redis.createClient( {host: "redis-server", port: 6379} )

'Node.js' 카테고리의 다른 글

Socket.io와 WebSocket 비교  (0) 2023.11.27
Node.js 클러스터  (0) 2023.08.28
Node.js 정의 및 장단점  (0) 2023.06.06
Node.js Swagger 적용  (0) 2023.06.03
Socket.io  (0) 2023.05.31

댓글