重生之我要当前端大王–node篇--05NoSQL之Redis

重生之我要当前端大王–node篇

第一篇章 后端服务篇–nodeJS启动!

05 NoSQL之Redis

前言

阅读本章,可学习到redis增删改查,express如何操作redis

一、redis是什么?

Redis 是一个开源的高性能键值对数据库,它支持多种类型的数据结构,如字符串、哈希、列表、集合、有序集合等。Redis 以其快速读写速度和低延迟而闻名,常用于缓存、消息队列、排行榜、实时分析等场景。

二、简单邂逅redis

需要有redis的服务端和客户端,在网上查找,或者私信我,发你一份

1.引入库

通过ioredis操作redis: pnpm i ioredis
简单增删查

import Redis from 'ioredis' 
export const redis=new Redis({
    host:'localhost',//主机
    port:6379//端口,默认6379
})
//增加
redis.set('name','xxm')
//查询
redis.get('name').then(res=>{
    console.log(res);
    
})
//修改
setTimeout(()=>{
redis.set('name','xxm1')
redis.get('name').then(res=>{
    console.log(res);
    
})
},2000)
//删除
setTimeout(()=>{
    redis.del('name')
    redis.get('name').then(res=>{
        console.log(res);
        
    })
},4000)

这里我们一开始设置一个key为name为xxm的值,一开始读取得到,俩秒后对其进行修改,四秒后对其进行删除,便读不到了
在这里插入图片描述

2.redis在开发中有什么用呢?

我常用的是通过redis进行接口限流,校验token等,下面举一个校验token的例子

	//这里定义了一个登录接口,登录后返回token
 router.post('/login',async(req,res)=>{
    const {name,password}=req.body
    const user=await knexDb('user').select('*').where('username','=',name)
    if(user==null){
      throw new Error('用户不存在')
    }
    //这里一般通过哈希加密密码调方法进行校验,为了简单就没有加密,直接if判断
    if(user[0].password==password){
      //使用jsonwebtoken 生成token,过期时间24小时
      const token=jwt.sign({id:user.id},'xxm',{expiresIn:'1d'})
      //存一份到reids,过期时间一致
      redis.setex(token,60*60*60*24,token)
      res.json({
        msg:'登录成功',
        data:token
      })
    }else{
      throw new Error('密码输入错误')
    }
  })

//在index.js
//使用一个全局中间件进行校验token是否一致,这里也是简单演示,没有进行深度校验
app.use(async(req,res,next)=>{
    const token=req.headers.authorization.split(' ')[1]//获取前端请求头携带的token进行截取
    console.log(token);
    const redisToken=await redis.get(token)
    console.log(redisToken);
    if(redisToken && redisToken===token){
        console.log('通过');
        next()
    }
    else{
        res.status(401).send('鉴权失败');
    }
})

使用postman send一下看看
在这里插入图片描述
再查看控制台打印输出,可以看到token一致才放行
在这里插入图片描述
如果不一致,进行拦截
在这里插入图片描述
查看控制台输出,发现redis查不到东西,返回null
在这里插入图片描述

总结

以上就是今天要讲的内容,这里简单介绍了express如何操作redis,以及redis的鉴权作用,快拿上你的键盘去试试吧,本文到此结束,你的点赞是我更新的动力。

  • 12
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值