spring security 大用户量缓存问题

使用spring security时,一般会在系统加载是初始化用户、资源等信息到缓存中,但是如果此时用户的数量很大,此时初始化缓存将会造成内存溢出,如果解决该问题,我们可以考虑在系统加载是并不去进行初始化用户数据到缓存中,当用户第一次登录的时候,会调用org.springframework.security.providers.dao.AbstractUserDetailsAuthenticationProvider.java类中的 public Authentication authenticate(Authentication authentication) throws AuthenticationException 方法进行用户的验证(具体可看我另一篇文章:spring security2认证详解说明),在该方法中会先从缓存中获取用户信息,获取不到则会从数据库(也是根据你的配置决定的)读取用户信息,用户信息获取到后,在该方法中会调用this.userCache.putUserInCache(user);来将该用户信息存储到缓存中,这样以后进行验证等操作时就可以直接从缓存中获取用户了。

通过这种在用户第一次登录时缓存用户的操作,一方面可以避免初始化时一次加载造成用户量过大时出现内存溢出等问题,另一方面在缓存的使用中,还可以设置缓存的过期时间,这样当该用户信息在缓存中长期不使用时也可从缓存中清除,避免缓存不够用,这样系统也就能够支撑大量用户。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值