NODE使用Redis操作用戶數(shù)據(jù)(增刪改查)

Redis安裝

下載地址:https://github.com/tporadowski/redis/releases

下載后解壓到文件夾贱勃,將文件夾重命名為redis

image.png

打開cmd窗口,進(jìn)入redis目錄谤逼,執(zhí)行啟動(dòng)命令

redis-server.exe redis.windows.conf

image.png

至此redis安裝并啟動(dòng)完成贵扰,默認(rèn)端口為6379

Node添加Redis數(shù)據(jù)庫及用戶數(shù)據(jù)操作

連接Redis數(shù)據(jù)庫

node使用ioredis工具
npm install ioredis --save

// utils/redis.js

const Redis = require("ioredis")

const redis = {
    port : 6379, //redis默認(rèn)端口
    host : '127.0.0.1', 
    db:0,
    family:4 // 4 (IPv4) or 6 (IPv6)
}

module.exports = new Redis(redis)

用戶數(shù)據(jù)增刪改查

示例用戶數(shù)據(jù)格式:

{ id: 5, name: "小明",address: "魔仙堡", phone: "124" }

在一般數(shù)據(jù)庫中,可以直接存儲(chǔ)這樣的數(shù)據(jù)流部,但是redis是key-value形式戚绕,也不分表,建立表之間的關(guān)聯(lián)也很麻煩枝冀。

我這里選擇用redis的hash存儲(chǔ)舞丛,將用戶數(shù)據(jù)對(duì)象轉(zhuǎn)換為JSON數(shù)據(jù)存入redis

新增用戶數(shù)據(jù)

redis.incr(_id) 實(shí)現(xiàn)id自增

用hash存儲(chǔ)用戶數(shù)據(jù),key是users果漾,以id為字段球切,以用戶數(shù)據(jù)為value

注意:用戶數(shù)據(jù)需轉(zhuǎn)成JSON格式存儲(chǔ)(不要直接放對(duì)象進(jìn)去,否則只能拿到[Object,Object])

再建一個(gè)name2id存儲(chǔ)用戶名和id的映射關(guān)系绒障,方便查找用戶名的id

//data : { name: "小孩",address: "白云", phone: "123" }

const redis = require("../utils/redis")

//設(shè)置id初始值
let _id = 0

const setUsers = async (data) => {
    //給data數(shù)據(jù)添加id
    let id = await redis.incr(_id)
    data["id"] = id
    
    //用name2id存儲(chǔ)用戶名和id的映射吨凑,方便根據(jù)用戶名查詢用戶id
    await redis.hset('name2id',data.name,id)
    
    //users存儲(chǔ)用戶數(shù)據(jù)
    data = JSON.stringify(data)
    //存儲(chǔ)成功返回“OK”
    let status = await redis.hset('users',id,data)
    return status
}
image.png

獲取用戶數(shù)據(jù)

//獲取某key全部數(shù)據(jù)
let usersData = await redis.hgetall("users")
let name2idData = await redis.hgetall("name2id")

//獲取key中某字段數(shù)據(jù)
let getData = await redis.hget("users","33")

打印結(jié)果如下圖

redis.hgetall("users") 獲取users中全部數(shù)據(jù),格式如下

image.png

redis.hgetall("name2id") 獲取全部數(shù)據(jù)户辱,格式如下

image.png

redis.hget("users","33") 獲取id為33的用戶數(shù)據(jù)

image.png

修改用戶數(shù)據(jù)

依然使用hset方法鸵钝,如果哈希表不存在,一個(gè)新的哈希表被創(chuàng)建并進(jìn)行 hset 操作庐镐。如果字段已經(jīng)存在于哈希表中恩商,舊值將被覆蓋,返回0

//data : { id: 33, name: "小李",address: "修改一下", phone: "232" }

const editUsers = async (data)=>{
    let id = data.id
    data = JSON.stringify(data)
    let status = await redis.hset("users",id,data)
    return status   //0
}

刪除用戶數(shù)據(jù)

//data : { id: 33, name: "小李",address: "修改一下", phone: "232" }

const delUsers = async (data)=>{
    //刪除name2id的映射
    await redis.hdel("name2id",data.name)
    //刪除users中的用戶數(shù)據(jù)
    let status = await redis.hdel("users",data.id)
    //返回被刪除的數(shù)量
    return status
}

根據(jù)用戶名查找用戶數(shù)據(jù)

查找成功返回用戶數(shù)據(jù)焚鹊,查找失敗返回NULL

const searUsers = async (name)=>{
    //先找用戶名對(duì)應(yīng)的id
    let id = await redis.hget("name2id",name)
    //根據(jù)id去users里拿用戶數(shù)據(jù)
    let data = await redis.hget("user2",id)
    //返回用戶數(shù)據(jù)的字符串 {"name":"小李","address":"123","phone":"232","id":33}
    //用JSON.parse(data)轉(zhuǎn)為對(duì)象傳回前端
    return data
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末痕届,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子末患,更是在濱河造成了極大的恐慌研叫,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件璧针,死亡現(xiàn)場離奇詭異嚷炉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)探橱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門申屹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绘证,“玉大人,你說我怎么就攤上這事哗讥∪履牵” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵杆煞,是天一觀的道長魏宽。 經(jīng)常有香客問我,道長决乎,這世上最難降的妖魔是什么队询? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮构诚,結(jié)果婚禮上蚌斩,老公的妹妹穿的比我還像新娘。我一直安慰自己范嘱,他們只是感情好送膳,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著丑蛤,像睡著了一般肠缨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上盏阶,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音闻书,去河邊找鬼名斟。 笑死,一個(gè)胖子當(dāng)著我的面吹牛魄眉,可吹牛的內(nèi)容都是我干的砰盐。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼坑律,長吁一口氣:“原來是場噩夢啊……” “哼岩梳!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起晃择,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤冀值,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后宫屠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體列疗,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年浪蹂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了抵栈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片告材。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖古劲,靈堂內(nèi)的尸體忽然破棺而出斥赋,到底是詐尸還是另有隱情,我是刑警寧澤产艾,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布疤剑,位于F島的核電站,受9級(jí)特大地震影響胰舆,放射性物質(zhì)發(fā)生泄漏骚露。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一缚窿、第九天 我趴在偏房一處隱蔽的房頂上張望棘幸。 院中可真熱鬧,春花似錦倦零、人聲如沸误续。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蹋嵌。三九已至,卻和暖如春葫隙,著一層夾襖步出監(jiān)牢的瞬間栽烂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來泰國打工恋脚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留腺办,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓糟描,卻偏偏與公主長得像怀喉,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子船响,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355