关于session过期的问题

来源:3-16 api之session处理与实现(下)

remembers

2020-03-18

func IsSessionExpired(sid string) (string, bool) {
	v, ok := sessionMap.Load(sid)
	if ok {
		// ...
	} else {
		// 去 DB 里面找 sid
	}		
}

老师,如上述代码所示,在 map 里面找不到 sid 就去 DB 里面找。

请问,是什么原因会造成 map 里没有 sid 反而 DB 里存在 sid 呢?

正常情况 map 里删掉 sid ,那么 DB 里应该也跟着删掉了。

( 这段代码在课程里没有写,我是看到课程源码里有,所以感到困惑。)

写回答

1回答

艾文西

2020-03-22

造成map没有的情况太多了。

  1. 集群部署下,一个新用户多次打到多个不同的api节点上就会出现当前节点的map里没有sid

  2. api节点重启时,当前节点就没有sid

  3. 各种原因导致的写入失败

1
1
remembers
Good Reply !
2020-03-22
共1条回复

Go语言实战流媒体视频网站,高效学习Go高性能开发

从零开始,全面掌握Go语言编码的架构风格和开发Web的关键技能

996 学习 · 268 问题

查看课程