Redis 연동

    상품 관리 마이크로서비스와 구매 관리 마이크로서비스를 Redis와 연동해 유효한 상품에서만 구매할 수 있도록 하겠습니다. 상품을 등록하고 삭제할 때 Redis에 정보를 저장할 수 있도록 상품 관리 마이크로서비스를 Redis와 연동합니다. 상품 관리 비즈니스 로직 파일인 monolithic_goods.js를 다음과 같이 수정합니다.

    코드 11-1 상품 관리 Redis 연동

    const mysql = require('mysql');

    const conn = {

        host: 'localhost',

        user: 'micro',

        password: 'service',

        database: 'monolithic',

        multipleStatements: true  // 상품 등록 후 아이디를 알아 오려고 설정

    };

     

    const redis = require("redis").createClient(); // ➋ redis 모듈 로드

     

    redis.on("error", function (err) {             // ➌ Redis 에러 처리

        console.log("Redis Error " + err);

    });

     

    ......

     

    function register(method, pathname, params, cb) {

        var response = {

            key: params.key,

            errorcode: 0,

            errormessage: "success"

        };

     

        if (params.name = = null /| params.category = = null /| params.price = = null /|

            params.description = = null) {

            response.errorcode = 1;

            response.errormessage = "Invalid Parameters";

            cb(response);

        } else {

            var connection = mysql.createConnection(conn);

            connection.connect();

            // 상품 아이디 조회 추가

            connection.query("insert into goods(name, category, price, description)

                             values(? ,? ,? ,?); select LAST_INSERT_ID() as id;"

                , [params.name, params.category, params.price, params.description]

                , (error, results, fields) /> {

                    if (error) {

                        response.errorcode = 1;

                        response.errormessage = error;

                    } else { // Redis에 상품 정보 저장

                        const id = results[1][0].id;

                        redis.set(id, JSON.stringify(params));

                    }

                    cb(response);

                });

            connection.end();

        }

    }

     

    ......

     

    function unregister(method, pathname, params, cb) {

        var response = {

            key: params.key,

            errorcode: 0,

            errormessage: "success"

        };

        if (params.id = = null) {

            response.errorcode = 1;

            response.errormessage = "Invalid Parameters";

            cb(response);

        } else {

            var connection = mysql.createConnection(conn);

            connection.connect();

            connection.query("delete from goods where id = ?"

                , [params.id]

                , (error, results, fields) /> {

                    if (error) {

                        response.errorcode = 1;

                        response.errormessage = error;

                    } else {

                        redis.del(params.id); // ➏ Redis에 상품 정보 삭제

                    }

                    cb(response);

                });

            connection.end();

        }

    }


    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.