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
Như vậy là xong thôi, giờ là test thử nó có chạy hay không
sudo redis-server
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
Cuối cùng test kết nối từ xa thôi.
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
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"); });
OK, chạy test xem sao nhé :)
Cuối cùng kết quả thu được sẽ như sau:
Ok, bây giờ cache nó đã có data rồi, chạy tiếp nữa xem sao
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
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 :)