nodejs操作redis總結

2021-09-27 04:05:43 字數 2950 閱讀 7314

本文總結常見的使用node操作redis服務,redis的key是唯一的,如果乙個key所對應的儲存型別是string,則不能再次覆蓋式設定key為hash;

這裡我們使用docker方式搭建redis伺服器

docker run -d --name redis -p 6379:6379 redis:2.8

node操作redis需要引入redis包;

const redis = require('redis');

const client = redis.createclient( 6379, '127.0.0.1');

const util = require('util');

乙個字串型別的值最大長度為512 m。

常見操作: get,set,mget,mset,incr(計數器++),decr(--)等等;

client.set('hello', 5, function(err, obj) )

})})

hash可用來儲存物件,乙個redis 列表中最多可儲存232-1(40億)個元素

var obj = 

client.hset("test", obj, function(err, obj) `);

console.log(obj.age);

})client.hget('test','name', function(err, name) )

});

對於lists,使用send_command進行操作;

佇列操作

list,常用操作, list,常用操作, lpush(首位新增),rpush(末位新增),lset(修改首位值),lindex(刪除首位元素),lpop(刪除末位元素)

乙個redis 列表中最多可儲存232-1(40億)個元素

client.send_command('lset',['mylist',0,1], function(err,data) )

client.send_command('lpush',['mylist', 'one'], function(err, data) )

// 使用命令列獲取對應的索引下的結果

// lindex mylist 0 'one'

// lindex mylist 1 '1'

// lindex mylist 2 '***'

// lindex mylist 3 '***'

sets 集合處理; 業務中用lodash進行交並補也是乙個不錯的選擇。

常見操作: sadd、smembers、sinter(交)、sunion(並)、sdiff(補)、smove

集合中不允許重複成員的存在。當多次新增乙個元素時,其結果會設定單個成員多次。乙個redis 集合中最多可包含232-1(40億)個元素。

let db1 = ['mysql','redis'];

let db2 = ['mongo','redis'];

client.sadd('db1',db1, function(err,data) )

client.sadd('db2', db2, function(err, data) );

client.sunion('db1','db2', function(err,data) );

client.sdiff('db1','db2', function(err,data) )

})});

常用操作: zadd(設定元素), zrange(獲取範圍內的元素),zrank(獲取指定元素的排名,從0開始), zscore(獲取指定元素的score,使用者指定的score)

client.zadd(['zdb',0,'mysql', 1,'mongo',2,'redis'], function(err, data) )

事務(multi命令): 批量執行所有的命令,並統一返回結果

client.multi()

.set('xiao','xing')

.get('xiao')

.exec(function(err,replies) )

redis的訂閱發布模式可用來做類似kafka的訊息推送;

使用list + redis的訂閱發布模式可以構建乙個不錯的訊息佇列;

let sub = redis.createclient(6379, '127.0.0.1');   // 監聽消費者

let pub = redis.createclient(6379, '127.0.0.1'); // 生產者

// 在sub開始監聽時允許觸發subscribe事件進行操作,類似連線資料庫的connect事件

sub.on('subscribe', function(channel, count) :$`); // test channel:1

pub.publish('test channel', 'channel message test')

}) sub.on('message', function(channel, message) -message:$`) // test channel-message:"channel message test"

}) sub.subscribe('test channel');

monitor事件可以監聽到redis收到的所有客戶端命令

client.monitor(function(err, res) )

client.on("monitor", function (time, args) );

nodejs連線redis學習

1 安裝 開啟乙個 cmd視窗 使用cd命令切換目錄到 c redis 執行 redis server.exe redis.windows.conf 這時候另啟乙個cmd視窗,原來的不要關閉,不然就無法訪問服務端了。切換到redis目錄下執行 redis cli.exe h 127.0.0.1 p ...

Redis操作 入門個人總結

redis操作 入門個人總結 linux下先找到redis cli客戶端 查詢find name redis cli redis入門新手總結 只適合新手入門,都是常用命令以及個人總結 參考文件 個別借鑑csdn 各種大牛xinde redis是一種支援key value等多種資料結構的儲存系統,也是...

nodejs學習總結

1.yarn全域性安裝依賴 可以直接在命令列使用 yarn global add 依賴名 將會安裝到全域性路徑2.yarn本地安裝依賴 yarn add 依賴名 會在node modules資料夾下加入依賴3.yarn初始化乙個專案,生成package.json yarn init4.yarn安裝專...