JWT本无状态,为何却要存储在Redis破坏其无状态特性?

举报
知识浅谈 发表于 2022/09/16 10:39:19 2022/09/16
【摘要】 JWT本无状态,为何却要存储在Redis破坏其无状态特性?

在这里插入图片描述

🍁 作者:知识浅谈,CSDN博客专家,阿里云签约博主,InfoQ签约博主,华为云云享专家
📌 擅长领域:全栈工程师、爬虫、ACM算法
💒 公众号:知识浅谈

🤞拿下,拿下🤞

🎈JWT优点?JWT为什么存客户端

JWT:先来说一下这是什么吧,JavaWebToken,可以得知这是一种token。
在这里插入图片描述

组成结构:JWT一共由三部分组成,Header的Base64编码,Payload的Base64编码,加密算法(Header+Payload+secret)的Base64编码。
Header:包含token类型,加密算法。
Payload:用户名,权限等非敏感信息。
Signature:加密算法(Header+Payload+secret)的Base64编码

JWT优点
无状态,
自身包含身份验证所需信息,使得后端不用存储Session 信息。

JWT缺点
无法主动失效。
无法主动续期。

一般JWT中包含了相应的用户信息,不需要在服务端存储,只需要登陆的时候携带验证即可,当然如果为了解决JWT自动续期的问题,我们往往存储在redis中,显然破坏了无状态在分布式服务器中的优势。

🎈使用redis目的是什么?

Redis:是一个Key-Value的键值对结构。
在这里插入图片描述

用处:常用于存储热点数据,如点赞数,评论,排行榜等数据,用户登录token等数据。
因为Redis中的数据是存储在内存中的,所以存取效率比较高,相比于Mysql中的数据,Redis中数据的存取更高效。
虽然是单线程但是速度缺很快,主要是因为以下几个方面:

  1. 数据存储在内存中。
  2. 采用IO多路复用原则
  3. 单线程,省去上下文切换花费的时间。
    其实Redis中的事件主要花费在IO上,其处理的事件往往不是很长。

🍚总结

以上关于JWT和Redis使用的部分说明,希望有所帮助。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。