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() })
- nodejs安装redis
- 封装成工具函数,供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 }
- 将配置参数写入配置文件中(配置文件根据项目架构自己设计公共文件夹)