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