Skip to content

Instantly share code, notes, and snippets.

@zhangyuchi
Created May 4, 2016 04:10
Show Gist options
  • Save zhangyuchi/aafb43329211235bef4c1c3e392f3ea5 to your computer and use it in GitHub Desktop.
Save zhangyuchi/aafb43329211235bef4c1c3e392f3ea5 to your computer and use it in GitHub Desktop.
func getActiveUserInzone(appid uint16, zone uint16) ([]*session.UserSession, error) {
var resp []*session.UserSession
keyname := fmt.Sprintf(userStatSetKey, appid, zone)
userids, err := SessionPool.Call(getSessionAddr(keyname)).SMEMBERS(keyname)
if err != nil {
return resp, errors.New(keyname + ":" + err.Error())
}
appidstr := strconv.FormatUint(uint64(appid), 10)
for _, userid := range userids {
masterkey := fmt.Sprintf(usersessionmasterkey, userid, appidstr)
if secondkeys, err := SessionPool.Call(getSessionAddr(masterkey)).SMEMBERS(masterkey); err != nil {
Logger.Error(userid, appidstr, "", "getActiveUserInzone", "SMEMBERS masterkey error", "")
continue
} else {
for _, secondkey := range secondkeys {
props, err := SessionPool.Call(getSessionAddr(masterkey)).HGETALLMAP(string(secondkey))
if err != nil && err != msgRedis.ErrKeyNotExist {
continue //must not be here
}
if err == nil {
userSession, err := prop2usersession(props)
if err == nil {
resp = append(resp, userSession)
}
}
}
}
}
return resp, nil
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment