|
@@ -361,30 +361,29 @@ type AppLoginPush struct {
|
|
|
|
|
|
//更新存储用户sessionid的队列 【sessionid ttl小于三天的清除】 key:sessionid
|
|
|
func PutLoginSess(mongodb MongodbSim, apppushRpc, key, userid string, limit, max int) bool {
|
|
|
- log.Println("进入sessionid队列")
|
|
|
value := GetLoginSess(userid)
|
|
|
if !IsInLoginSess(key, value) {
|
|
|
value = append(value, key)
|
|
|
}
|
|
|
ttlmap := []TtlMap{}
|
|
|
- // if len(value) >= int(limit*max/100) {
|
|
|
- // new_value := []string{}
|
|
|
- //如果已存的session大于限制 则清除三天后到期的session
|
|
|
- for _, vv := range value {
|
|
|
- ttl := redis.GetTTL("session", vv)
|
|
|
- // if ttl <= 86400*3 && ttl != -1 {
|
|
|
- // if ttl <= 600 && ttl != -1 {
|
|
|
- // if ok := redis.Del("session", vv); ok {
|
|
|
- // LoginOutPush(mongodb, userid, vv, apppushRpc)
|
|
|
- // log.Println(fmt.Sprintf("%s用户的sessionid 到期时间还有%v 小于三天 清除 %s", userid, ttl, vv))
|
|
|
- // }
|
|
|
- // continue
|
|
|
- // }
|
|
|
- // new_value = append(new_value, vv)
|
|
|
- ttlmap = append(ttlmap, TtlMap{vv, int(ttl)})
|
|
|
+ if len(value) >= int(limit*max/100) {
|
|
|
+ new_value := []string{}
|
|
|
+ //如果已存的session大于限制 则清除三天后到期的session
|
|
|
+ for _, vv := range value {
|
|
|
+ ttl := redis.GetTTL("session", vv)
|
|
|
+ if ttl <= 86400*3 && ttl != -1 {
|
|
|
+ // if ttl <= 600 && ttl != -1 {
|
|
|
+ if ok := redis.Del("session", vv); ok {
|
|
|
+ LoginOutPush(mongodb, userid, vv, apppushRpc)
|
|
|
+ log.Println(fmt.Sprintf("%s用户的sessionid 到期时间还有%v 小于三天 清除 %s", userid, ttl, vv))
|
|
|
+ }
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ new_value = append(new_value, vv)
|
|
|
+ ttlmap = append(ttlmap, TtlMap{vv, int(ttl)})
|
|
|
+ }
|
|
|
+ value = new_value
|
|
|
}
|
|
|
- // value = new_value
|
|
|
- // }
|
|
|
//清除并发最大限制的某个sessionid
|
|
|
if len(value) > max {
|
|
|
//排序 获取马上过期的session 清除
|
|
@@ -397,7 +396,7 @@ func PutLoginSess(mongodb MongodbSim, apppushRpc, key, userid string, limit, max
|
|
|
redis.Del("session", delId)
|
|
|
value = removeArr(value, delId)
|
|
|
LoginOutPush(mongodb, userid, delId, apppushRpc)
|
|
|
- log.Println(fmt.Sprintf("%s用户的sessionid 超过最大限制 清除 %s", userid, delId))
|
|
|
+ log.Println(fmt.Sprintf("%s用户的sessionid 超过最大限制 清除 %s ,到期时间%v", userid, delId, ttlmap[0].value))
|
|
|
}
|
|
|
}
|
|
|
return redis.Put("other", LoginRedisKey(userid), value, -1)
|