摘要:簡介是一個(gè)高性能的數(shù)據(jù)庫,把數(shù)據(jù)存在內(nèi)存中,并在磁盤中記錄數(shù)據(jù)的變化。因?yàn)閷?shù)據(jù)存在內(nèi)存中,所以數(shù)據(jù)操作非??臁T谥惺褂檬紫?,安裝驅(qū)動(dòng)支持多種數(shù)據(jù)類型,常用的有鍵值對,哈希表,鏈表,集合等。鍵值對運(yùn)行,結(jié)果如下哈希表哈希表有點(diǎn)類似中的。
Redis簡介
Redis是一個(gè)高性能的key-value數(shù)據(jù)庫,Redis把數(shù)據(jù)存在內(nèi)存中,并在磁盤中記錄數(shù)據(jù)的變化。因?yàn)閷?shù)據(jù)存在內(nèi)存中,所以數(shù)據(jù)操作非???。
安裝以windows環(huán)境為例,先下載windows版本的redis,地址如下:3.2.100
下載完成后,解壓,我這里解壓到D:redis目錄下
打開一個(gè) cmd 窗口,進(jìn)入目錄到 D:redis,運(yùn)行 redis-server.exe redis.windows.conf。
出現(xiàn)上面界面,則redis已經(jīng)在本機(jī)端口6379啟動(dòng)了服務(wù),那么接下來,便可以用客戶端連接到redis服務(wù)端了。
在node中使用redis首先,安裝驅(qū)動(dòng):npm install redis
redis支持多種數(shù)據(jù)類型,常用的有鍵/值對,哈希表,鏈表,集合等。
普通數(shù)據(jù)我們先來看看如何存儲(chǔ)和獲取鍵/值對。
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(); })
運(yùn)行,結(jié)果如下
哈希表有點(diǎn)類似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(); });
運(yùn)行,結(jié)果如下:
鏈表Redis鏈表類似JS數(shù)組,lpush向鏈表中添加值,lrange獲取參數(shù)start和end范圍內(nèi)的鏈表元素, 參數(shù)end為-1,表明到鏈表中最后一個(gè)元素。
注意:隨著鏈表長度的增長,數(shù)據(jù)獲取也會(huì)逐漸變慢(大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(); });
運(yùn)行,結(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(); });
運(yùn)行,結(jié)果如下:
信道Redis超越了數(shù)據(jù)存儲(chǔ)的傳統(tǒng)職責(zé),它還提供了信道,信道是數(shù)據(jù)傳遞機(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,這時(shí)clientA捕獲到訂閱事件,執(zhí)行回調(diào)函數(shù),clientB向main_chat_room發(fā)送了一條信息Hello world!
clientA接受到信息后,在控制臺(tái)打印出了相關(guān)信息。
運(yùn)行,結(jié)果如下:
本篇只是對Redis進(jìn)行了最基本介紹,想要獲得更多信息,可以參考:
redis documentation
node_redis
Redis實(shí)戰(zhàn)
Redis開發(fā)與運(yùn)維
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/96574.html
摘要:節(jié)點(diǎn)管理器將利用該聲明該集群服務(wù)。在本示例當(dāng)中,我們將部署一項(xiàng)服務(wù)。此標(biāo)記用于告知公布端口作為該服務(wù)的可用端口。將此稱為入口負(fù)載均衡。當(dāng)外部系統(tǒng)調(diào)用某項(xiàng)服務(wù)時(shí),接收節(jié)點(diǎn)會(huì)接受流量并利用提供的內(nèi)部服務(wù)對其進(jìn)行負(fù)載均衡。 最新版本Docker Engine v1.12中,包含了多項(xiàng)與Docker Swarm緊密相關(guān)的功能變更。在今天的文章中,數(shù)人云將和大家探討如何利用Docker的Swar...
摘要:編程書籍的整理和收集最近一直在學(xué)習(xí)深度學(xué)習(xí)和機(jī)器學(xué)習(xí)的東西,發(fā)現(xiàn)深入地去學(xué)習(xí)就需要不斷的去提高自己算法和高數(shù)的能力然后也找了很多的書和文章,隨著不斷的學(xué)習(xí),也整理了下自己的學(xué)習(xí)筆記準(zhǔn)備分享出來給大家后續(xù)的文章和總結(jié)會(huì)繼續(xù)分享,先分享一部分的 編程書籍的整理和收集 最近一直在學(xué)習(xí)deep learning深度學(xué)習(xí)和機(jī)器學(xué)習(xí)的東西,發(fā)現(xiàn)深入地去學(xué)習(xí)就需要不斷的去提高自己算法和高數(shù)的能力然后...
閱讀 2365·2021-11-16 11:52
閱讀 2338·2021-11-11 16:55
閱讀 765·2021-09-02 15:41
閱讀 2997·2019-08-30 15:54
閱讀 3156·2019-08-30 15:54
閱讀 2265·2019-08-29 15:39
閱讀 1520·2019-08-29 15:18
閱讀 981·2019-08-29 13:00