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缓存

关注公众号,可以获取学习资料和源码

在这里插入图片描述

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
对于使用Redis储token的情况,你可以按照以下步骤进行操作: 1. 安装Redis:首先,确保你已经在服务器上安装了Redis数据库。你可以从官方网站(https://redis.io/)上获取适合你操作系统的安装包,并按照说明进行安装。 2. 连接Redis:在你的应用程序中,使用适合你编程语言的Redis客户端库与Redis建立连接。常用的编程语言有Python、Java、Node.js等,每种语言都有对应的Redis客户端库。 3. 生成和储token:在用户登录验证成功后,生成一个唯一的token,并将其储到Redis中。你可以使用用户的唯一标识符(如用户ID)作为key,将token作为value储。例如,使用Python语言和`redis-py`库可以这样实现: ```python import redis import secrets redis_host = 'localhost' redis_port = 6379 redis_db = 0 # 连接Redis r = redis.Redis(host=redis_host, port=redis_port, db=redis_db) # 生成token token = secrets.token_hex(16) # 使用secrets库生成随机token # 储token到Redis user_id = 'user123' # 假设用户的唯一标识符是'user123' r.set(user_id, token) ``` 4. 验证token:当需要验证用户请求中的token时,从Redis中获取储的token,并与请求中的token进行比较。如果两者一致,则验证通过。例如,使用Python语言和`redis-py`库可以这样实现: ```python import redis redis_host = 'localhost' redis_port = 6379 redis_db = 0 # 连接Redis r = redis.Redis(host=redis_host, port=redis_port, db=redis_db) # 获取储的token user_id = 'user123' # 假设用户的唯一标识符是'user123' stored_token = r.get(user_id) # 验证token request_token = '...' # 从请求中获取的token if stored_token and stored_token.decode() == request_token: # 验证通过 pass else: # 验证失败 pass ``` 这只是一个简单的示例,你可以根据具体需求进行适当修改和完善。记得在合适的时机清除过期的token,以避免Redis数据库占用过多内
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值