本文由图雀社区认证作者 布拉德特皮 写作而成,点击阅读原文查看作者掘金链接,感谢作者的优质输出,让我们的技术世界变得更加美好????
前言
上一篇介绍了如何配合 Swagger UI 解决写文档这个痛点,这篇将介绍如何利用 Redis 解决 JWT 登录认证的另一个痛点:同账号的登录挤出问题。(再不更新,读者就要寄刀片了 -_-||)
GitHub 项目地址,欢迎各位大佬 Star。
为了照顾还没学到第八课读者,本篇教程单独开了一个分支
use-redis
,拉项目后记得切换
前期准备
什么是 Redis
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。
Redis 的效率很高,官方给出的数据是 100000+ QPS,这是因为:
Redis 完全基于内存,绝大部分请求是纯粹的内存操作,执行效率高。
Redis 使用单进程单线程模型的(K,V)数据库,将数据存储在内存中,存取均不会受到硬盘 IO 的限制,因此其执行速度极快。另外单线程也能处理高并发请求,还可以避免频繁上下文切换和锁的竞争,如果想要多核运行也可以启动多个实例。
数据结构简单,对数据操作也简单,Redis 不使用表,不会强制用户对各个关系进行关联,不会有复杂的关系限制,其存储结构就是键值对,类似于 HashMap,HashMap 最大的优点就是存取的时间复杂度为 O(1)。
Redis 使用多路 I/O 复用模型,为非阻塞 IO。
注:Redis 采用的 I/O 多路复用函数:epoll/kqueue/evport/select。
安装 Redis
要使用 Redis,那首先得安装 Redis,由于本篇的重点不在 Redis安装,这里贴上 Windows 和 MacOS 环境的安装教程,不再赘述:
mac os 安装 redis - 简书
在 windows 上安装 Redis - 官方
有意思的是,官方的教程中提到了:
Redis 官方不建议在 windows 下使用 Redis,所以官网没有 windows 版本可以下载。还好微软团队维护了开源的 window 版本,虽然只有 3.2 版本,对于普通测试使用足够了。
Redis 可视化客户端
1. Mac OS
笔者使用 MacOS 系统,故使用 AnotherRedisDesktopManager 作为 Redis 可视化客户端:
# clone code
git clone https://github.com/qishibo/AnotherRedisDesktopManager.git
cd AnotherRedisDesktopManager
# install dependencies
npm install
# if download electron failed during installing, use this command
# ELECTRON_MIRROR="https://npm.taobao.org/mirrors/electron/" npm install
# serve with hot reload at localhost:9988
npm start
# after the previous step is completed, open another tab, build up a desktop client
npm run electron
复制代码
2. Windows
在 Windows 下,可以使用 Redis Desktop Manager
官网的需要付费,不过测试同事用的 0.8.8.384
版本,读者可自行选择:
启动 Redis 并连接客户端
由于使用的 MacOS 系统,这里直接拿 AnotherRedisDesktopManager
做演示了,Windows 也是大同小异的。
我们先将 Redis 服务开起