根据黑马程序员的Redis项目讲解的内容进行整理,以免看了就忘!💪
网址:黑马点评项目实战,掌握企业实战项目真实应用场景,一套精通redis缓存技术_哔哩哔哩_bilibili
验证码登录
基于Session实现的登录
优点:
每个浏览器拥有属于自己的session,tomcat同时处理多个session,所以验证码互不干扰,
getAttribute("code")
即可。
缺点:
session保存验证码,占用tomcat空间,后端压力过大。ps:通常而言session都是保存在内存中,而随着认证用户的增多,服务端的开销会明显增大
多台tomcat不共享session存储空间,当切换tomcat服务时会发生数据错误。(可以使用session拷贝功能,但是会造成空间浪费,并且拷贝需要时间)
基于Redis实现的登录
需要注意:
校验登录的时候Redis的key值设置为手机号,每次验证登录的时候根据key读取验证码,与用户提交的验证码进行验证是否相等。需要加前缀表示一个业务。
短信验证码登录成功后,将用户信息存入Redis,这时的key值不设置成手机号,为了安全设置成token(如UUID,JWT)。因为不像session,浏览器会将sessionId写到cookie中,而我们需要将token手动发送到前端保存在浏览器内,如果存手机号容易暴露信息。前端可以将返回的结果保存在localStorage(浏览器本地缓存)或sessionStorage(session缓存)上,退出登录时前端删除保存的JWT即可。
设置过期时间。
缓存功能
缓存更新策略:TODO 三种缓存更新策略
穿透、击穿、雪崩:穿透、击穿、雪崩-花's Blog