Memcached

Node.js 同步處理 (2)

基本介紹

教學目標

透過 memcached 套件實作即時同步計數 API,透過 Apache Benchmark 工具進行驗證。

前置作業

  1. 完成 Node.js 套件安裝與設置。
  2. 啟動 Memcached 伺服器。
  3. 安裝 ApacheBench 工具。

套件安裝

1
$ npm install memcached --save

使用教學

透過 memcached 套件撰寫即時同步計數 API 伺服器,主要存取 Memcached 分散式伺服器。

server.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var Memcached = require('memcached');
var memcached = new Memcached('localhost:11211');
var express = require('express');
var app = express();

var lifetime = 86400000;

app.get('/api/v1/count', function(req, res){
var key = req.query.key;
memcached.incr(key, 1, function (err) {});
memcached.get(key, function (err, data) {
if (!data) {
memcached.set(key, 0, lifetime, function (err) {});
} else {
console.log(data);
res.json({value: data})
}
});
});

app.listen(8080);

執行 即時同步計數 API 伺服器。

1
$ node server.js

透過 Apache Benchmark 工具進行驗證。

1
$ ab -n 100000 -c 100 http://localhost:8080/api/v1/count?key=impression

相關資源

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();

相關資源