MAC下安裝Node.js(Express框架)連線redis資料庫

weixin_33866037發表於2016-12-02

MAC下安裝Node.js(Express框架)連線redis資料庫

標籤(空格分隔): Node.js


[TOC]

首先安裝Node.js和Express框架

安裝教程:

安裝好Node.js和Express框架以後,首先通過Express建立一個應用

eg:blog

安裝redis資料庫

安裝教程

安裝好redis資料庫以後一定要啟動資料庫,否則後續連線可能會失敗

在Express中框架中安裝redis資料庫

安裝好redis資料庫並啟動以後,由於需要通過Express連線資料庫,所以,需要在Express框架中整合node_redis模組。

整合方法:

  • 通過cd進入建立的應用程式目錄,執行以下命令安裝node_redis模組
npm install redis

app.js檔案中,加入以下程式碼連線資料庫

// 連線redis資料庫
var redis = require('redis');
var client = redis.createClient();
client.on('connect',function(){
    console.log('connect');
});

預設情況下redis.createClient()將會使用127.0.0.1(host)和6379(port)來作為主機和埠。如果你的主機地址和埠與上面的不一致。你可以通過下面的方式來建立客戶端

var client = redis.createClient(port,host,{options});

如果有許可權認證的話,需要加上以下認證方法

client.auth('密碼'); // 傳入密碼

測試資料庫是否連線成功

在上訴連線操作之後,在app.js中你可以通過監聽connect事件來測試是否連線資料庫成功

client.on('connect', function() {
    console.log('connected');
});

注意
這時候需要重啟node.js的server。(如果你用的是supervisor的話是不需要重啟的)。如果在命令列中有列印connected說明連線成功了

資料庫的增刪改查

往資料庫中儲存資料

儲存鍵值對的方式有兩種

  • 方式一
client.set('framework', 'AngularJS',function(err,reply){});
  • 方式二
client.set(['framework', 'AngularJS'],function(err,reply){});
  • 儲存一堆零碎資訊

很多時候儲存一些單一的值無法滿足你的需求,你可以通過下面的方式來儲存一些零碎的值

client.hmset('frameworks', 'javascript', 'AngularJS', 'css', 'Bootstrap', 'node', 'Express');

client.hgetall('frameworks', function(err, object) {
    console.log(object);
});

上面這種方式通過hmset()在redis中儲存了每一種技術對應的framework,第一個引數是key的名字。子引數要求是鍵值對的形式。hgetall()是用於取出鍵的值的,如果key找不到的話,第二個引數(回撥函式)將包含一個物件值

注意:在redis中是不支援巢狀物件的,所有物件的值將在儲存之前強制型別轉換成string型別

你也可以通過使用下面的方式來儲存物件在redis中

client.hmset('frameworks', {
    'javascript': 'AngularJS',
    'css': 'Bootstrap',
    'node': 'Express'
});
  • 儲存一組資料

如果你希望儲存一組資料,你可以使用下面的方式

client.rpush(['frameworks', 'angularjs', 'backbone'], function(err, reply) {
    console.log(reply); //prints 2
});

上面的示例中,建立了一個名為frameworks的list,並且給它新增了兩個元素。所以,當前的陣列長度為2.

從資料庫中取出資料

client.get('framework', function(err, reply) {
    console.log(reply);
});

儲存Hash值

client.hmset('frameworks', 'javascript', 'AngularJS', 'css', 'Bootstrap', 'node', 'Express');

client.hgetall('frameworks', function(err, object) {
    console.log(object);
});

也可以使用以下等價方式來儲存

client.hmset('frameworks', {
    'javascript': 'AngularJS',
    'css': 'Bootstrap',
    'node': 'Express'
});

參考文件:

Using Redis with Node.js

Nodejs學習筆記(九)--- 與Redis的互動(mranney/node_redis)入門

相關文章