基于Session和redis实现登录的选择

基于Session实现登录

Session登录流程图:

若是单体服务,可以基于Session实现登录问题。但是在集群部署的情况下Session存在共享问题:因为多台Tomcat并不共享Session的存储空间,当请求切换到不同的Tomcat时会造成数据丢失的问题。

基于redis实现共享Session登录

redis实现流程图:

与上面Session实现登录图对比可发现redis实现是把用户信息存储在了redis中,因为redis是内存存储的,在redis集群部署下可以实现数据共享,解决了在集群部署下Session数据共享的问题。

在redis中存储用户信息时可以使用String结构或者Hash结构存储。

  • Sting结构是以JSON字符串进行保存,比较直观,便于查询观察,但是操作比较麻烦,每次都要使用序列化和反序列化,有一定开销。而且不便于单独操作用户的某个属性。

  • Hash结构可以将对象的每个字段独立存储,可以针对单个字段做crud,但是占用内存会比String稍微多一些

Redis代替session需要考虑的问题:

  • 选择合适的数据结构

  • 选择合适的key

  • 选择合适的存储粒度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值