nodejs使用內(nèi)存數(shù)據(jù)庫(kù)redis

redis簡(jiǎn)單介紹

  • redis = 內(nèi)存數(shù)據(jù)庫(kù)
    • web server 最常用的緩存數(shù)據(jù)庫(kù)梨与,數(shù)據(jù)存放在內(nèi)存中
    • 優(yōu)點(diǎn)是速度快
    • 缺點(diǎn)是內(nèi)存比較昂貴
    • 相比于mysql呻率,訪問速度快(內(nèi)存和硬盤不是一個(gè)數(shù)量級(jí))
    • 解決方案redis
      • 將web server和radis拆分為兩個(gè)單獨(dú)的服務(wù)
      • 雙方都是獨(dú)立的,都是可拓展的(例如都拓展成集群)
      • 包括mysql,也是一個(gè)單獨(dú)的服務(wù),也可拓展

redis使用

  • nodejs連接redis
    • nodejs安裝redis tyarn add redis
    • 引入redis const redis = require('redis')
    • 創(chuàng)建客戶端 redis.createClient
    • nodejs創(chuàng)建的redis實(shí)例也可在redis-cli中共同set和get
    • 完整實(shí)例set,get
      const redis = require('redis')
      // 創(chuàng)建客戶端
      const redisClient = redis.createClient(6379, '127.0.0.1')
      redisClient.on('error' , err =>{
        console.error(err);
      })
      // set
      redisClient.set('msg', 'zachliu', redis.print)
      // get
      redisClient.get('msg', (err, value) => {
        if (err) {
          console.error(err);
          return
        }
        console.log(value);
        redisClient.quit()
      })
      
  • 封裝成工具函數(shù)笋颤,供API使用
    • 將配置參數(shù)寫入配置文件中(配置文件根據(jù)項(xiàng)目架構(gòu)自己設(shè)計(jì)公共文件夾)
      let REDIS_CONF
      if (env === 'dev') {
        // redis
        REDIS_CONF = {
          port: '3306',
          host: '127.0.0.1'
        }
      }
      
    • 封裝工具函數(shù)
      const redis = require('redis')
      const {
        REDIS_CONF
      } = require('../config/db')
      // 創(chuàng)建客戶端
      const redisClient = redis.createClient(REDIS_CONF.port, REDIS_CONF.host)
      redisClient.on('error', err => {
        console.error(err);
      })
      
      function set(key, val) {
        // 將對(duì)象轉(zhuǎn)換成字符串
        if (typeof val === 'object') {
          val = JSON.stringify(val)
        }
        // set
        redisClient.set(key, val, redis.print)
      }
      
      function get(key) {
        // get
        const promise = new Promise((resolve, reject) => {
          redisClient.get(key, (err, value) => {
            if (err) {
              reject(err)
              return
            }
            // 處理數(shù)據(jù)為null的數(shù)據(jù)
            if (value == null) {
              resolve(null)
              return
            }
            // 處理json格式的數(shù)據(jù)
            try{
              resolve(JSON.parse(value))
            }catch{
              resolve(value)
            }
          })
        })
        return promise
      }
      
      module.exports = {
        set,
        get
      }
      
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市闯捎,隨后出現(xiàn)的幾起案子椰弊,更是在濱河造成了極大的恐慌,老刑警劉巖瓤鼻,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秉版,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡茬祷,警方通過查閱死者的電腦和手機(jī)清焕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)祭犯,“玉大人秸妥,你說(shuō)我怎么就攤上這事∥执郑” “怎么了粥惧?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)最盅。 經(jīng)常有香客問我突雪,道長(zhǎng),這世上最難降的妖魔是什么涡贱? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任咏删,我火速辦了婚禮,結(jié)果婚禮上问词,老公的妹妹穿的比我還像新娘督函。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布辰狡。 她就那樣靜靜地躺著锋叨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪搓译。 梳的紋絲不亂的頭發(fā)上悲柱,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音些己,去河邊找鬼。 笑死嘿般,一個(gè)胖子當(dāng)著我的面吹牛段标,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播炉奴,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼逼庞,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了瞻赶?” 一聲冷哼從身側(cè)響起赛糟,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎砸逊,沒想到半個(gè)月后璧南,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡师逸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年司倚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片篓像。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡动知,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出员辩,到底是詐尸還是另有隱情盒粮,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布奠滑,位于F島的核電站丹皱,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏养叛。R本人自食惡果不足惜种呐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望弃甥。 院中可真熱鬧爽室,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至啸箫,卻和暖如春耸彪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背忘苛。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工蝉娜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人扎唾。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓召川,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親胸遇。 傳聞我的和親對(duì)象是個(gè)殘疾皇子荧呐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容