1

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

 1 year ago
source link: https://blog.51cto.com/u_13794952/5682223
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

精选 原创

知识浅谈 2022-09-16 10:41:57 博主文章分类:后端技术栈 ©著作权

文章标签 redis 数据 加密算法 文章分类 Java 编程语言 yyds干货盘点 阅读数202

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

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

🤞拿下,拿下🤞

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

JWT:先来说一下这是什么吧,JavaWebToken,可以得知这是一种token。

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

组成结构: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的键值对结构。

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

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

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

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

  • 收藏
  • 评论
  • 分享
  • 举报

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK