Node.js 快取處理 (2)

基本介紹

教學目標

透過 redis 套件進行快取讀取與寫入的基本操作。

前置作業

  1. 完成 Node.js 套件安裝與設置。

套件安裝

1
$ npm install redis --save

使用教學

安裝 Redis 記憶體快取

1
$ sudo apt-get install redis-server

啟動 Redis 記憶體快取

1
$ sudo /etc/init.d/redis-server start

檢查 Redis 記憶體快取狀態

1
$ netstat -nlt | grep 6379

建立連線

1
2
3
4
5
6
7
8
var host = '伺服器位址';
var port = 6379;
var redis = require("redis"),
cache = redis.createClient(port,host);

cache.on("error", function (err) {
console.log(err);
});

若是出現 “Error: Redis connection to xxx.xxx.xxx.xxx:6379 failed - connect ECONNREFUSED” 訊息,請進行以下步驟。

修改綁定存取的伺服器 IP 位址,其中 bind 0.0.0.0 代表全部 IP 皆可以存取。

1
$ vi /etc/redis/redis.conf

1
2
3
4
5
bind 127.0.0.1 -> bind 0.0.0.0

Esc

:wq!
1
$ sudo /etc/init.d/redis-server restart

寫入快取資料

1
2
3
4
5
6
var data = {
'id': 1,
'name': 'Leo Yeh'
};

var key = data.id.toString();
cache.set(key, JSON.stringify(data));

讀取快取資料

1
2
3
4
var key = '1';
cache.get(key, function(err, results) {
console.log(results);
});

關閉連線

1
cache.end();

相關資源

Node.js 例外處理 (1)

基本介紹

教學目標

透過 Node.js 進行例外處理。

  • Process 例外處理
  • Try…Catch 例外處理
  • Module 例外處理

前置作業

  1. 完成 Node.js 套件安裝與設置。

使用教學

Process 例外處理

剛開始會在程序 (Process) 上綁定事件進行例外錯誤處理,雖然簡單方便使用,但是不建議長期使用。

1
2
3
4
5
6
process.on('uncaughtException', function(err) {
console.log(err);
});

var err = new Error('例外錯誤情況發生');
throw err;

Try…Catch 例外處理

當例外錯誤發生在「同步」程式碼的區塊中時,最好使用 try…catch 進行例外錯誤處理。

1
2
3
4
5
6
try {
var err = new Error('例外錯誤情況發生');
throw err;
} catch(err) {
console.log(err);
}

Module 例外處理

當例外錯誤發生在執行「非同步」的程式碼時,最好使用 domain 模組 (Module) 進行例外錯誤處理。

1
2
3
4
5
6
7
8
9
10
var domain = require('domain').create();

domain.on('error', function(err) {
console.log(err);
});

domain.run(function() {
var err = new Error('例外錯誤情況發生');
throw err;
});

相關資源

Node.js 快取處理 (1)

基本介紹

教學目標

透過 memcached 套件進行快取讀取與寫入的基本操作。

前置作業

  1. 完成 Node.js 套件安裝與設置。

套件安裝

1
$ npm install memcached --save

使用教學

安裝 Memcached 記憶體快取

1
$ sudo apt-get install memcached

啟動 Memcached 記憶體快取

1
$ memcached -p 11211

檢查 Memcached 記憶體快取狀態

1
$ netstat -nlt | grep 11211

建立連線

1
2
3
4
5
var memcached = require('memcached');

var host = '伺服器位址';
var port = 11211;
var cache = new memcached(host + ":" + port);

寫入快取資料

1
2
3
4
5
6
7
8
9
10
11
12
var data = {
'id':1,
'name':'Leo Yeh'
};
var key = data.id.toString();
// 1000 代表 1 秒
var lifetime = 1000;
cache.set( key, JSON.stringify(data), lifetime, function(err) {
if (err) {
throw err;
}
});

讀取快取資料

1
2
3
4
5
6
7
var key = '1';
cache.get( key, function(err, results) {
if (err) {
throw err;
}
console.log(results);
});

關閉連線

1
cache.end();

相關資源

Node.js 檔案處理 (2)

基本介紹

教學目標

透過 jsonfile 套件進行 JSON 檔案讀取與寫入的基本操作。

前置作業

  1. 完成 Node.js 套件安裝與設置。
  2. 準備 JSON 檔案,命名為 data.json 。

套件安裝

1
$ npm install jsonfile --save

使用教學

讀取 JSON 檔案

1
2
3
4
5
6
7
8
var json = require('jsonfile')
json.readFile('data.json', function(err, results) {
if (err) {
throw err;
}
console.log("讀取成功!");
console.log(results);
});

寫入 JSON 檔案

1
2
3
4
5
6
7
8
9
10
11
var json = require('jsonfile')
var data = [{
id: 1,
name: 'Leo Yeh'
}];
json.writeFile('output.json', data, function(err) {
if (err) {
throw err;
}
console.log("寫入成功!");
});

相關資源

Node.js 檔案處理 (1)

基本介紹

教學目標

透過 fast-csv 套件進行 CSV 檔案讀取與寫入的基本操作。

前置作業

  1. 完成 Node.js 套件安裝與設置。
  2. 準備 CSV 檔案,命名為 data.csv 。

套件安裝

1
$ npm install fast-csv --save

使用教學

讀取 CSV 檔案

1
2
3
4
5
6
7
8
9
var csv = require("fast-csv");
csv
.fromPath("data.csv")
.on("data", function(results) {
console.log(results);
})
.on("end", function() {
console.log("讀取成功!");
});

寫入 CSV 檔案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var csv = require("fast-csv");
var data = [{
id: 1,
name: 'Leo Yeh'
}];
csv
.writeToStream("output.csv", data, {
headers: true,
transform: function(row) {
return {
id: row.id,
name: row.name
};
}
})
.on("finish", function() {
console.log("寫入成功!");
});

相關資源