亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Redis新手指南:在node中使用redis

pcChao / 3158人閱讀

摘要:簡介是一個高性能的數(shù)據(jù)庫,把數(shù)據(jù)存在內(nèi)存中,并在磁盤中記錄數(shù)據(jù)的變化。因為將數(shù)據(jù)存在內(nèi)存中,所以數(shù)據(jù)操作非???。在中使用首先,安裝驅(qū)動支持多種數(shù)據(jù)類型,常用的有鍵值對,哈希表,鏈表,集合等。鍵值對運行,結(jié)果如下哈希表哈希表有點類似中的。

Redis簡介

Redis是一個高性能的key-value數(shù)據(jù)庫,Redis把數(shù)據(jù)存在內(nèi)存中,并在磁盤中記錄數(shù)據(jù)的變化。因為將數(shù)據(jù)存在內(nèi)存中,所以數(shù)據(jù)操作非??臁?/p> 安裝

以windows環(huán)境為例,先下載windows版本的redis,地址如下:3.2.100
下載完成后,解壓,我這里解壓到D:redis目錄下

開啟服務(wù)

打開一個 cmd 窗口,進入目錄到 D:redis,運行 redis-server.exe redis.windows.conf。

出現(xiàn)上面界面,則redis已經(jīng)在本機端口6379啟動了服務(wù),那么接下來,便可以用客戶端連接到redis服務(wù)端了。

在node中使用redis

首先,安裝驅(qū)動:npm install redis

redis支持多種數(shù)據(jù)類型,常用的有鍵/值對,哈希表,鏈表,集合等。

普通數(shù)據(jù)

我們先來看看如何存儲和獲取鍵/值對。

var redis = require("redis")

var client = redis.createClient(6379, "127.0.0.1")
client.on("error", function (err) {
  console.log("Error " + err);
});

// 1 鍵值對
client.set("color", "red", redis.print);
client.get("color", function(err, value) {
  if (err) throw err;
  console.log("Got: " + value)
  client.quit();
})

運行,結(jié)果如下

哈希表

哈希表有點類似ES6中的Map。

client.hmset("kitty", {
  "age": "2-year-old",
  "sex": "male"
}, redis.print);
client.hget("kitty", "age", function(err, value) {
  if (err) throw err;
  console.log("kitty is " + value);
});

client.hkeys("kitty", function(err, keys) {
  if (err) throw err;
  keys.forEach(function(key, i) {
    console.log(key, i);
  });
  client.quit();
});

運行,結(jié)果如下:

鏈表

Redis鏈表類似JS數(shù)組,lpush向鏈表中添加值,lrange獲取參數(shù)start和end范圍內(nèi)的鏈表元素, 參數(shù)end為-1,表明到鏈表中最后一個元素。
注意:隨著鏈表長度的增長,數(shù)據(jù)獲取也會逐漸變慢(大O表示法中的O(n))

client.lpush("tasks", "Paint the house red.", redis.print);
client.lpush("tasks", "Paint the house green.", redis.print);
client.lrange("tasks", 0, -1, function(err, items) {
  if (err) throw err;
  items.forEach(function(item, i) {
    console.log(" " + item);
  });
  client.quit();
});

運行,結(jié)果如下:

集合

類似JS中的Set,集合中的元素必須是唯一的,其性能: 大O表示法中的O(1)

client.sadd("ip", "192.168.3.7", redis.print);
client.sadd("ip", "192.168.3.7", redis.print);
client.sadd("ip", "192.168.3.9", redis.print);
client.smembers("ip", function(err, members) {
  if (err) throw err;
  console.log(members);
  client.quit();
});

運行,結(jié)果如下:

信道

Redis超越了數(shù)據(jù)存儲的傳統(tǒng)職責(zé),它還提供了信道,信道是數(shù)據(jù)傳遞機制,提供了發(fā)布/預(yù)定功能。

var redis = require("redis")
var clientA = redis.createClient(6379, "127.0.0.1")
var clientB = redis.createClient(6379, "127.0.0.1")

clientA.on("message", function(channel, message) {
  console.log("Client A got message from channel %s: %s", channel, message);
});
clientA.on("subscribe", function(channel, count) {
  clientB.publish("main_chat_room", "Hello world!");
});
clientA.subscribe("main_chat_room");

上面代碼中,clientA訂閱了main_chat_room,這時clientA捕獲到訂閱事件,執(zhí)行回調(diào)函數(shù),clientB向main_chat_room發(fā)送了一條信息Hello world!
clientA接受到信息后,在控制臺打印出了相關(guān)信息。
運行,結(jié)果如下:

小結(jié)

本篇只是對Redis進行了最基本介紹,想要獲得更多信息,可以參考:
redis documentation
node_redis
Redis實戰(zhàn)
Redis開發(fā)與運維

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/96574.html

相關(guān)文章

  • 代碼級操作指南 | 如何Docker Swarm運行服務(wù)

    摘要:節(jié)點管理器將利用該聲明該集群服務(wù)。在本示例當中,我們將部署一項服務(wù)。此標記用于告知公布端口作為該服務(wù)的可用端口。將此稱為入口負載均衡。當外部系統(tǒng)調(diào)用某項服務(wù)時,接收節(jié)點會接受流量并利用提供的內(nèi)部服務(wù)對其進行負載均衡。 最新版本Docker Engine v1.12中,包含了多項與Docker Swarm緊密相關(guān)的功能變更。在今天的文章中,數(shù)人云將和大家探討如何利用Docker的Swar...

    Winer 評論0 收藏0
  • AI開發(fā)書籍分享

    摘要:編程書籍的整理和收集最近一直在學(xué)習(xí)深度學(xué)習(xí)和機器學(xué)習(xí)的東西,發(fā)現(xiàn)深入地去學(xué)習(xí)就需要不斷的去提高自己算法和高數(shù)的能力然后也找了很多的書和文章,隨著不斷的學(xué)習(xí),也整理了下自己的學(xué)習(xí)筆記準備分享出來給大家后續(xù)的文章和總結(jié)會繼續(xù)分享,先分享一部分的 編程書籍的整理和收集 最近一直在學(xué)習(xí)deep learning深度學(xué)習(xí)和機器學(xué)習(xí)的東西,發(fā)現(xiàn)深入地去學(xué)習(xí)就需要不斷的去提高自己算法和高數(shù)的能力然后...

    huayeluoliuhen 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<