node.js應用Redis

周小董發表於2019-01-23

Node.js下使用Redis,首先:

1、有一臺安裝了Redis的伺服器,當然,安裝在本機也行

2、本機,也就是客戶端,要裝node.js

3、專案要安裝nodejs_redis模組

注意第 3 點,不是在本機安裝就行了,而是說,要在專案中安裝(引用)。

方法是,DOS視窗,在專案目錄下,輸入

npm install redis

這樣就將nodejs_redis下載一份,放到當前目錄下了。看看,多了一個資料夾:node_modules\redis

編寫以下程式碼,儲存到當前目錄下\index.js

var redis = require("redis"),//召喚redis
/*
    連線redis資料庫,createClient(port,host,options);
    如果REDIS在本機,埠又是預設,直接寫createClient()即可
    redis.createClient() = redis.createClient(6379, '127.0.0.1', {})
*/
    RDS_PORT = 6379,                //埠號
    RDS_HOST = '192.168.8.30',    //伺服器IP  要連線的A伺服器redis
    RDS_PWD = '123456',     //密碼
    RDS_OPTS = {db:9},                  //設定項
    client = redis.createClient(RDS_PORT,RDS_HOST,RDS_OPTS);

//如果需要驗證,還要進行驗證
//client.auth(password, callback);
client.auth(RDS_PWD,function(){
    console.log('通過認證');
});
// if you'd like to select database 3, instead of 0 (default), call
// client.select(3, function() { /* ... */ });

client.on('connect',function(){
    //redis.print,回撥函式,將redis的返回值顯示出來。上一句執行結果,將返回“OK”
    client.set('author', 'Wilson',redis.print);
    // 設定過期時間 10s後過期
    //client.set('key','value','EX',10)
    client.get('author', redis.print);
    console.log('connect');
});
client.on('ready',function(err){
    console.log('ready');
});

//錯誤監聽?
client.on("error", function (err) {
    console.log("Error " + err);
});

client.hset("hash key", "hashtest 1", "some value", redis.print);
client.hset(["hash key", "hashtest 2", "some other value"], redis.print);
//遍歷雜湊表"hash key"
client.hkeys("hash key", function (err, replies) {
    console.log(replies.length + " replies:");
    replies.forEach(function (reply, i) {
        console.log("    " + i + ": " + reply);
    });
client.hget("hash key","hashtest 1",redis.print);

//可同時設定多個key,value
client.hmset('hash 1', 'key', 'value111', 'key2', 'value222', 'key3', 'value3', redis.print);
//可同時獲取多個key
client.hmget('hash 1', 'key', 'key2', 'key3', redis.print);

/*兩種都可以斷掉與redis的連線,
end()很粗暴,不管3721,一下子退出來了,上面那句獲取雜湊表"hash key"的某個元素值的表示式將沒有結果返回
而quit()則是先將語句處理完畢再幹淨地退出,斯文得很
*/
//client.end();
client.quit();
});

執行:

DOS視窗,當前專案目錄下,輸入

node index.js

  • publish/subscribe(釋出/訂閱)
const sub = redis.createClient() // 訂閱者
const pub = redis.createClient() // 釋出者
var msg_count = 0;

sub.on("subscribe", function (channel, count) {
    client.publish("a nice channel", "I am sending a message.");
    client.publish("a nice channel", "I am sending a second message.");
    client.publish("a nice channel", "I am sending my last message.");
});

sub.on("message", function (channel, message) {
    console.log("sub channel " + channel + ": " + message);
    msg_count += 1;
    if (msg_count === 3) {
        sub.unsubscribe();
        sub.quit();
        client.quit();
    }
});

ps aux|grep redis //檢視開啟的redis
kill -9 1245(redis的開啟號) //殺死開啟程式

參考資料:https://github.com/mranney/node_redis

參考:https://blog.csdn.net/q1512451239/article/details/56488686
https://www.e-learn.cn/content/javascript/1079912

相關文章