美文网首页
nodejs使用内存数据库redis

nodejs使用内存数据库redis

作者: JX灬君 | 来源:发表于2021-10-20 21:19 被阅读0次

    redis简单介绍

    • redis = 内存数据库
      • web server 最常用的缓存数据库,数据存放在内存中
      • 优点是速度快
      • 缺点是内存比较昂贵
      • 相比于mysql,访问速度快(内存和硬盘不是一个数量级)
      • 解决方案redis
        • 将web server和radis拆分为两个单独的服务
        • 双方都是独立的,都是可拓展的(例如都拓展成集群)
        • 包括mysql,也是一个单独的服务,也可拓展

    redis使用

    • nodejs连接redis
      • nodejs安装redis tyarn add redis
      • 引入redis const redis = require('redis')
      • 创建客户端 redis.createClient
      • nodejs创建的redis实例也可在redis-cli中共同set和get
      • 完整实例set,get
        const redis = require('redis')
        // 创建客户端
        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()
        })
        
    • 封装成工具函数,供API使用
      • 将配置参数写入配置文件中(配置文件根据项目架构自己设计公共文件夹)
        let REDIS_CONF
        if (env === 'dev') {
          // redis
          REDIS_CONF = {
            port: '3306',
            host: '127.0.0.1'
          }
        }
        
      • 封装工具函数
        const redis = require('redis')
        const {
          REDIS_CONF
        } = require('../config/db')
        // 创建客户端
        const redisClient = redis.createClient(REDIS_CONF.port, REDIS_CONF.host)
        redisClient.on('error', err => {
          console.error(err);
        })
        
        function set(key, val) {
          // 将对象转换成字符串
          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
              }
              // 处理数据为null的数据
              if (value == null) {
                resolve(null)
                return
              }
              // 处理json格式的数据
              try{
                resolve(JSON.parse(value))
              }catch{
                resolve(value)
              }
            })
          })
          return promise
        }
        
        module.exports = {
          set,
          get
        }
        

    相关文章

      网友评论

          本文标题:nodejs使用内存数据库redis

          本文链接:https://www.haomeiwen.com/subject/pieqaltx.html