两个地方登录同一个账号,其中一个账号退出,另一个账号刷新页面会报错,因为redis清空数据,但是刷新页面会从redis中取值

小栗子hl 发布于 2016/09/29 16:05
阅读 449
收藏 0
这种bug要怎么修改了,除了单点登录
加载中
0
金拱门
金拱门
我可以说你的语文能力有待提高吗? 你到底是 解决 两个不同账号登录,其中任意一个退出吗?
小栗子hl
小栗子hl
回复 @首席撸破屌 : 考虑下
金拱门
金拱门
回复 @小栗子hl : 任意账号取值时,先检查redis是否存在此用户的数据。不存在就更新redis中的数据。反之就取。这样就不会报错了。但这样做得话,可能存在一定脏读。
小栗子hl
小栗子hl
回复 @首席撸破屌 : 大神,你的回答很高级。。小弟不太懂
金拱门
金拱门
回复 @小栗子hl : 现在问题清晰很多了。这个是一个并发的问题了。是否应该 锁呢? 例如 乐观锁。。或者上事务。
小栗子hl
小栗子hl
...
0
JianF
JianF
用户登录后生成token,根据token处理登录用户信息
小栗子hl
小栗子hl
我现在是将redis里面对应的token数据置为Null,这样不可以吗?
JianF
JianF
回复 @小栗子hl : redis以token为键值存储用户信息,用户每次登陆就会产生一条记录,退出时删除对应token即可
小栗子hl
小栗子hl
是根据token。但是目前注销只是从redis中清空数据。。多个用户登录的话会产生问题。。
0
凯旋小强
后台session取不到值就让他返回登陆页重新登陆就好了。用户都已经注销了吧
凯旋小强
回复 @小栗子hl : 其实存在拿对于你这个案例关系不大,注销清除了键值关系,另一地的本账号所保持的姑且说是token已经对应不到用户信息了,即使缓存可以从数据库中同步出来,但是对应关系不在,你也不知道去取哪个用户信息了
红魔小贝
红魔小贝
他的意思是另一个会话有没有清空,我感觉你说的是redis存的键是和账号关联的,不是会话,退出时清空了。取不出来就去数据库取吧
小栗子hl
小栗子hl
不是从session取值,是从redis取值。我可以让他在页面刷新的时候,如果取不到值,就返回。但是我怕其他操作也报错。因为其他操作也会从redis中取值。。这个我目前无法判断
返回顶部
顶部