课程章节:第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 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦