SUSE Certified Administrator (SCA) - Cài đặt Redis trên SUSE Linux 15 và benchmark performance testing với api-benchmark - Nodejs

 Hôm nay sẽ nói về cách cài đặt Redis trên Suse Linux 15, nghe tới đây thì khi nói về Redis thông thường thì người ta sẽ nói đến dùng Docker cho nhanh vì chỉ cần docker-compose up là xong sẽ có cái dùng.


Ok,  và đây sẽ bỏ qua những khái niệm ở trên và sẽ bắt đầu cài đặt Redis trên SUSE Linux 15, nó khá đơn giản và khá nhanh như sau.


sudo zypper addrepo https://download.opensuse.org/repositories/server:/database/SLE_15/server:database.repo


sudo zypper refresh


sudo zypper install redis

Cài đặt Redis trên SUSE Linux 15 và benchmark performance testing với api-benchmark - Nodejs

Như vậy là xong thôi, giờ là test thử nó có chạy hay không


sudo redis-server


Cài đặt Redis trên SUSE Linux 15 và benchmark performance testing với api-benchmark - Nodejs

Như trên thì phần default xem như chạy ok rồi đấy. Giờ câu hỏi sẽ đặt ra là nếu khởi động lại thì sao, nếu như nền tảng os khác thì systemclt enable bla bla thì trên Suse Linux sẽ như thế nào ? và custom config ra sao ? Muốn remote từ xa vào redis như thế nào ?

Ok, nếu config yêu cầu như trên thì cần tham khảo file config sau :


sudo ls /etc/redis/


Default trong này sẽ có file config mẫu, cần gì cứ xem trong đó ra sài, cái đơn giản nhất là như sau


sudo vi /etc/redis/redis.conf


bind 0.0.0.0
requirepass conchimnon@123
protected-mode no


Bind 0.0.0.0 để mọi nơi access từ xa, set password cho redis và cho phép remote, config trên là basic nhất để làm điều đó.

Sau khi đã có file config và cho nó chạy với file config đó dưới dạng background như sau


sudo redis-server /etc/redis/redis.conf --daemonize yes


Ping một phát mà nó Pong thì xem như ok


Cài đặt Redis trên SUSE Linux 15 và benchmark performance testing với api-benchmark - Nodejs


Cuối cùng test kết nối từ xa thôi.


Cài đặt Redis trên SUSE Linux 15 và benchmark performance testing với api-benchmark - Nodejs


Khi mọi thứ đã ok rồi thì sẽ tạo một service khi nào khởi động lại server thì Redis vẫn chạy ngầm


sudo vi /etc/systemd/system/redis.service


[Unit]
Description=Redis - phamquangloc.vn
After=network.target

[Service]
User=redis
Group=redis
ExecStart=/usr/sbin/redis-server /etc/redis/redis.conf
LimitNOFILE=10240
ExecStop=/usr/bin/redis-cli shutdown
Restart=always

[Install]
WantedBy=multi-user.target


sudo systemctl enable redis.service


sudo systemctl start redis.service


Cài đặt Redis trên SUSE Linux 15 và benchmark performance testing với api-benchmark - Nodejs


Như trên là cách cài đặt khá là nhanh Redis trên SUSE Linux 15 và phần hay nhất của bài này sẽ là benchmark performance testing :)

 OK, sẽ dùng Nodejs test cho nhanh như sau, bắt đầu thôi.

Hiện tại kịch bản sẽ như sau : 


- Sẽ dùng /get-api kéo list api về và moij thứ sẽ đẩy vào redis. (Dùng ioredis để kết nối) và api này là kéo về từ https://covid19.mathdro.id

- Chạy /benchmark để nó test performance (api-benchmark)

- Sau khi benchmark xong nó sẽ xuất report thì /results sẽ đọc report đó lên

Ok đơn giản vậy thôi, xem đoạn code bên dưới để rõ hơn


const express = require("express");
const axios = require("axios");
const Redis = require("ioredis");
const app = express();
var apiBenchmark = require("api-benchmark");
const fs = require("fs");

const client = new Redis({port: 6379,host: "192.168.1.100",family: 4,password: "conchimnon@123",db: 0,});
client.on("connect", () => {
    console.log("Redis connected");
});

client.on("error", (err) => {
    console.log("Redis error: " + err);
});

const api = "https://covid19.mathdro.id/api/deaths";

app.get("/get-api", (req, res) => {
    try {
        client.get(api, (err, data) => {
            if (err) {
                console.log("Redis error: " + err);
            } else {
                if (data) {
                    console.log("Redis data: " + data);
                    res.send(data);
                } else {
                    axios.get(api).then((response) => {
                        client.set(api, JSON.stringify(response.data), "EX", 120);
                        res.send(response.data);
                    });
                }
            }
        }
        );
    } catch (error) {
        console.log(error);
    }
});

app.get('/benchmark',(req,res)=>{
    try {
        const services = {
            server1: "http://localhost:3000",
          };
        const options = {
            minSamples: 100,
          };
          
          var routerCache = { route1: "/get-api" };
        apiBenchmark.measure(
            services,
            routerCache,
            options,
            function (err, results) {
              apiBenchmark.getHtml(results, function (error, html) {
                fs.writeFile("results.html", html, function (err) {
                  if (err) return console.log(err);
                });
              });
            }
          );
          return res.send("Benchmark finished");
    } catch (error) {
        console.log(error);
    }
});

app.get('/results',(req,res)=>{
    try {
        res.sendFile(__dirname + "/results.html");
    } catch (error) {
        console.log(error);
    }
})

app.listen(process.env.PORT || 3000, () => {
    console.log("Node server started");
});


Cài đặt Redis trên SUSE Linux 15 và benchmark performance testing với api-benchmark - Nodejs


Cài đặt Redis trên SUSE Linux 15 và benchmark performance testing với api-benchmark - Nodejs

OK, chạy test xem sao nhé :)


Cài đặt Redis trên SUSE Linux 15 và benchmark performance testing với api-benchmark - Nodejs


Cài đặt Redis trên SUSE Linux 15 và benchmark performance testing với api-benchmark - Nodejs


Cuối cùng kết quả thu được sẽ như sau:


Cài đặt Redis trên SUSE Linux 15 và benchmark performance testing với api-benchmark - Nodejs

Ok, bây giờ cache nó đã có data rồi, chạy tiếp nữa xem sao


Cài đặt Redis trên SUSE Linux 15 và benchmark performance testing với api-benchmark - Nodejs

Thấy nó nhanh hơn rồi, ví code EX set 120 mà nên chơi thoải mái, làm phát nữa xem nhanh hơn không


Cài đặt Redis trên SUSE Linux 15 và benchmark performance testing với api-benchmark - Nodejs

Report cuối nhảy xuống còn 0.29 đến 0.30 so với trên thấp hơn khá nhiều, đúng là sự lợi hại của cache :)

OK, ở trên là phần nói sơ về benchmark performance testing với api-benchmark, dùng để bổ trợ cho bài viết Cài đặt Redis trên SUSE Linux 15 . Hy vọng ai đọc được bài này rãnh rỗi cũng làm bài testing để cảm nhận hơn về Cache :)


Nhãn: