session正在被淘汰吗?

首先你需要明白 session 的本质是什么,然后你就会发现 session 一直都在。虽然可能换了个名字,或者换了存储方式,但 session 的本质并没有改变。例如你说的将状态信息写出来 redis,这就是换了个存储方式,目的是利用 redis 的共享性和速度。

session 的实现方式有很多种,redis 只是其中之一。除了像 JWT 这种将状态信息存储在客户端的“异类”,其他将信息存于服务端并通过唯一 ID 寻址的都是 session。

 

http 无状态,所以为了实现有状态 http,才有了会话(session)的概念。说实话,网上很多关于会话的讨论都过于具体,会牵扯到不同的实现方案,容易让人误会,下文的“会话”都指的是广义的 web 会话。

客户端保管方式

credential 由客户端保管,客户端怎么存放几乎不关服务器的事,浏览器,安卓 app,ios app,桌面应用等都是客户端

 

浏览器一般把 credential 放在cookie里,就像把曲奇饼(cookie)放在小罐子里,cookie 特殊的地方在于,浏览器会听服务器的话,比如服务器在设置cookie时指定了“http only”,那浏览器就不会允许 js 拿到,至于其他的客户端,想放哪放哪,直接存文件或存本地数据库都行,或者还有其他骚操作都行。

session的实质就是前端保存一个id,后端根据这个id来识别会话,存取数据。仅此而已,至于这个id怎么保存,可以放在url后面,可以放在cookie里,甚至可以放在header里。

在我看来,只要用到这种模式的都算session,只不过这种id(专业点叫token)的实现方式不同。session的缺点就是数据保存在哪里的问题,既然要保存,分布式的时候肯定要保证session一致性。

 

http.是无状态的,业务是有状态的,cookie也好,session也好,都是为了实现这个需求而创造的工具,无论技术怎么演进,万变不离其宗,还是会有个地方存储业务的状态,区别只是方式和实现的不同,本质并没有变。

此基本流程之上,cookie session https 存内存还是存redis还是存磁盘,存1天,1周,1月,自有协议,通用协议等等,并无本质区别,没谁死,都活得好好的

“大型网站”就没几个,一天1亿PV,qps160.25,乘5乘8随意也就1000qps峰值,存这些登录态7天活跃能有多大,百万级别至多了吧,一台4核16G的netty机器足够了,开swap都没啥大不了的。。。,不够?那是因为你缺台热备机,用到redis也就是因为切换主备用户最好没感知(对哦,我这可是叫做集群喔,毕竟2台机器+redis+小负载均衡网关),你要操心的所有问题可能都是mysql。

狭义的session,是基于http协议,通过浏览器cookie和服务端session对应来鉴权和保存用户状态。说到集群,php原生支持部署session到redis,memcached,mysql等。只需要几行简单的配置即可TG:li9047

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页

打赏作者

DIC专业信息提供者

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值