Redis 存用户信息

用session的情况

登录流程

  • 用户输入用户名和密码,传到后台,后台去数据库查询,如果用户名和密码都正确,就会把查询出来的当前用户对象存到session.
  • 用户已经登录成功,访问其他页面,比如查询自己的成绩,那么需要知道登录用户的id才能到数据库成绩表查询, 这个用户id就可以直接通过session获取。
  • 如何拿sesion里面的登录用户对象? HttpServletRequest req.getSession(). session的数据是存在服务器,但是浏览器里面存了session id. 这个session id 可以保证每个不同的浏览器(客户端),在服务器端都可以拿到自己的那个session,从而不同的人,同时登录系统,服务器端都可以区分不同人各自的登录信息。

缺点

  • 只能是一个服务器,如果有多个服务器同时负载均衡的话,有可能拿不到登录信息。 因为登录的时候数据存A服务器,可能后面查成绩的时候,请求到了B服务器,但是B服务器里面没有登录信息的session.

Redis 存登录信息

如果登录信息,存在Redis里面就可以支持多个服务器的负载均衡了。

  • Redis 存的格式是key,value, key是一个唯一的字符串, value是 登录用户的user对象
  • 这个key ,一定是从前端传过来的
  • key的值,有很多方式,但是必须保证唯一,最简单的,可以直接是user对象的id. 一般的做法是id就一个时间戳,再加密一次。组成一个唯一的字符串。
  • 这个key的字符串,一般会放在 每次 请求的head里面

Redis还可以用于缓存

比如商品信息,可以把数据缓存到Redis,因为商品的变动频率很小,
用户浏览商品的时候,直接返回redis里面的数据,会更加快速。
但是如果查询某个商品,redis里面没有,就必须到数据库里面再查一次,如果查到了,就返回页面同时把这个数据存到redis里面。

  • redis里面可以设置数据的有效时间,来定时更新redis里面的缓存数据。
  • 如果用户直接修改了数据库,可以通过mysql的触发器去更新数据到redis缓存

你可能感兴趣的:(Redis,java高级)