为了账号安全,请及时绑定邮箱和手机立即绑定

【备战春招】第11天 在 Node 中操作 Redis

标签:
Node.js

课程章节第3章 技术选型和知识点介绍(下) 3-1 3-2 3-3

课程讲师双越

课程内容

Redis 是一个使用 ANSI C 编写的开源、支持网络、基于内存、可选持久性键值对存储数据库。 Redis 不是一个简单的 Key-Value 数据库,它还支持多种数据结构。Redis 是内存数据库,数据都存放在内存中,读写效率都很高,常用来做缓存。

Nodejs 中使用一个模块来操作 Redis 数据库,先安装依赖:

yarn add redis

配置 Redis 数据库的连接信息:

const REDIS_CONF = {
    host: '127.0.0.1',
    port: 6379 // redis 数据库的默认端口号是 6379
  }
}

module.exports = {
  REDIS_CONF
}

使用 redis 模块连接到数据库:

const redisClient = require('redis')
const { REDIS_CONF } = require('../conf/db')

// 创建客户端
const client = redis.createClient(REDIS_CONF.prot, REDIS_CONF.host)

// 监听连接状况
redisClient.on("error", function (err) {
  console.log("Error " + err);
});

对于常用的取值操作,设置值操作,做一个简单的封装,方便后续的使用:

/**
 * redis set
 * @param {string} key key
 * @param {string} val val
 * @param {number} time 过期时间,单位:s
 */
function set(key, val, timeout=60*60) {
  if(typeof val === 'object') {
    // 如果传入的val是对象,要进行序列化
    val = JSON.stringify(val);
  }

  redisClient.set(key, val);
  // 设置过期时间
  redisClient.expire(key, timeout);
}

/**
 * redis get
 * @param {string} key 
 * @returns {Promise} promise
 */
function get(key) {
  // Redis官方提供的redis sdk使用回调函数处理异步,我们将其封装为promise的形式
  return new Promise((resolve, reject) => {
    redisClient.get(key, (err, val) => {
      if(err) {
        reject(err);
        return;
      }

      if(val == null) {
        // 没有查询到key,可能是过期了
        resolve(null); 
        return;
      }

      try {
        // 如果存储的key的对应的val是Object类型的,需要反序列化
        resolve(JSON.parse(val))
      } catch(ex) {
        // 如果反序列化失败,就直接返回查询到的值
        resolve(val);
      }
    })
  })
}

module.exports = {
  get,
  set
}

使用 Redis 时大部分场景都是使用 get 和 set,和在命令行中操作 Redis 一致。

课程收获

这节课学习了在 Node.js 中通过 redis 模块来连接和操作 Redis 数据库的方法,非常简单。

图片描述

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
Web前端工程师
手记
粉丝
2
获赞与收藏
4

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消