大厂技术 高级前端 Node进阶
点击上方 程序员成长指北,关注公众号
回复1,加入高级Node交流群
前言
大家好,我是 koala,一个有趣且乐于分享的人,这是 Nest.js 实战系列第四篇,我要用真实的场景让你学会使用 Node 主流框架。
回顾一下【Nest
入门系列文章】
前面Nest.js
系列的文章中我们其实留了两个可以用redis
优化的地方:
一个是我们的在做登录时,通过
JWT
已经实现了服务端生成token
以及验证客户端发送的token
信息。实现对文章点赞功能,采用的是将点赞数据直接写入数据库
JWT token
实现方式, 将基本信息直接放在token
中,以便于分布式系统使用, 但是我们没有设置有限期(这个是可以实现的),并且服务端无法主动让token
失效。而Redis天然支持过期时间,也能实现让服务端主动使token
过期。
当然并不是说JWT token 不如 redis+token实现方案好, 具体看使用的场景,这里我们并不讨论二者孰优孰劣,只是提供一种实现方案,让大家知道如何实现。
1. 认识redis
对于前端的小伙伴来说,Redis可能相对比较陌生,首先认识一下
Redis是什么
Redis是一个开源(BSD许可)的,基于内存的数据结构存储系统,它可以用作数据库、缓存和消息中间件,是现在最受欢迎的 NoSQL 数据库之一。
其具备如下特性:
速度快
单节点读110000次/s,写81000次/s
基于内存运行,性能高效
用 C 语言实现,离操作系统更近
持久化
数据的更新将异步地保存到硬盘(RDB 和 AOF
多种数据结构
不仅仅支持简单的 key-value 类型数据
还支持:字符串、hash、列表、集合、有序集合
支持多种编程语言等等
Redis 典型使用场景
缓存
缓存可以说是Redis最常用的功能之一了, 合理的缓存不仅可以加快访问的速度,也可以减少后端数据库的压力。
排行系统
利用Redis的列表和有序集合的特点,可以制作排行榜系统,而排行榜系统目前在商城类、新闻类、博客类等等,都是比不可缺的。
计数器应用
计数器的应用基本和排行榜系统一样,都是多数网站的普遍需求,如视频网站的播放计数,电商网站的浏览数等等,但这些数量一般比较庞大,如果存到关系型数据库,对MySQL或者其他关系型数据库的挑战还是很大的,而Redis基本可以说是天然支持计数器应用。
(视频直播)消息弹幕
直播间的在线用户列表,礼物排行榜,弹幕消息等信息,都适合使用Redis中的SortedSet结构进行存储。
例如弹幕消息,可使用ZREVRANGEBYSCORE
排序返回,在Redis5.0中,新增了zpopmax
,zpopmin
命令,更加方便消息处理。
Redis的应用场景远不止这些,Redis对传统磁盘数据库是一个重要的补充,是支持高并发访问的互联网应用必不可少的基础服务之一。
纸上谈兵终觉浅,必须实战一波~
Redis的安装和简单使用,我这里就不一一介绍了,这里贴上我之前写的两篇文章:
Redis 安装
Redis入门篇-基础使用
可以快速的安装、了解Redis数据类型以及常用的命令。