package common import ( "errors" "fmt" "github.com/garyburd/redigo/redis" "pro2d/common/db/redisproxy" ) func GetNextRoleId() (string, error) { relay, err := redisproxy.HGET(fmt.Sprintf(AutoIncrement, GlobalSconf.ID), "role") if err != nil { return "", err } ID, err := redis.Int64(relay, err) if err != nil { return "", err } //roleID的范围 [GlobalSconf.ID*MaxRoleNum, GlobalSconf.ID*MaxRoleNum + MaxRoleNum] if ID-GlobalSconf.ID*MaxRoleNum >= MaxCommNum-1 { return "", errors.New("DB_FULL") } relay, err = redisproxy.HINCRBY(fmt.Sprintf(AutoIncrement, GlobalSconf.ID), "role", 1) ID, err = redis.Int64(relay, err) if err != nil { return "", err } return fmt.Sprintf("%d", ID), nil } func GetNextUId() (string, error) { relay, err := redisproxy.HGET(fmt.Sprintf(AutoIncrement, GlobalSconf.ID), "uid") if err != nil { return "", err } var ID int64 = 0 if relay == nil { ID = 90000 redisproxy.HSET(fmt.Sprintf(AutoIncrement, GlobalSconf.ID), "uid", ID) } else { relay, err = redisproxy.HINCRBY(fmt.Sprintf(AutoIncrement, GlobalSconf.ID), "uid", 1) ID, err = redis.Int64(relay, err) if err != nil { return "", err } } return fmt.Sprintf("%d", ID), nil }