mirror of
https://github.com/duanhf2012/origin.git
synced 2026-06-11 07:46:50 +08:00
优化代码规范
This commit is contained in:
@@ -14,37 +14,37 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
const batchRemoveNum = 128 //一切删除的最大数量
|
||||
const batchRemoveNum = 128 //一切删除的最大数量
|
||||
|
||||
// RankDataDB 排行表数据
|
||||
type RankDataDB struct {
|
||||
Id uint64 `bson:"_id"`
|
||||
RefreshTime int64 `bson:"RefreshTime"`
|
||||
SortData []int64 `bson:"SortData"`
|
||||
Data []byte `bson:"Data"`
|
||||
ExData []int64 `bson:"ExData"`
|
||||
Id uint64 `bson:"_id"`
|
||||
RefreshTime int64 `bson:"RefreshTime"`
|
||||
SortData []int64 `bson:"SortData"`
|
||||
Data []byte `bson:"Data"`
|
||||
ExData []int64 `bson:"ExData"`
|
||||
}
|
||||
|
||||
// MongoPersist持久化Module
|
||||
// MongoPersist 持久化Module
|
||||
type MongoPersist struct {
|
||||
service.Module
|
||||
mongo mongodbmodule.MongoModule
|
||||
|
||||
url string //Mongodb连接url
|
||||
dbName string //数据库名称
|
||||
SaveInterval time.Duration //落地数据库时间间隔
|
||||
url string //Mongodb连接url
|
||||
dbName string //数据库名称
|
||||
SaveInterval time.Duration //落地数据库时间间隔
|
||||
|
||||
sync.Mutex
|
||||
mapRemoveRankData map[uint64]map[uint64]struct{} //将要删除的排行数据 map[RankId]map[Key]struct{}
|
||||
mapUpsertRankData map[uint64]map[uint64]RankData //需要upsert的排行数据 map[RankId][key]RankData
|
||||
|
||||
mapRankSkip map[uint64]IRankSkip //所有的排行榜对象map[RankId]IRankSkip
|
||||
maxRetrySaveCount int //存档重试次数
|
||||
retryTimeIntervalMs time.Duration //重试时间间隔
|
||||
mapRankSkip map[uint64]IRankSkip //所有的排行榜对象map[RankId]IRankSkip
|
||||
maxRetrySaveCount int //存档重试次数
|
||||
retryTimeIntervalMs time.Duration //重试时间间隔
|
||||
|
||||
lastSaveTime time.Time //最后一次存档时间
|
||||
lastSaveTime time.Time //最后一次存档时间
|
||||
|
||||
stop int32 //是否停服
|
||||
stop int32 //是否停服
|
||||
waitGroup sync.WaitGroup //等待停服
|
||||
}
|
||||
|
||||
@@ -84,12 +84,12 @@ func (mp *MongoPersist) ReadCfg() error {
|
||||
}
|
||||
|
||||
//读取数据库配置
|
||||
saveMongoCfg,ok := mapDBServiceCfg["SaveMongo"]
|
||||
saveMongoCfg, ok := mapDBServiceCfg["SaveMongo"]
|
||||
if ok == false {
|
||||
return fmt.Errorf("RankService.SaveMongo config is error")
|
||||
}
|
||||
|
||||
mongodbCfg,ok := saveMongoCfg.(map[string]interface{})
|
||||
mongodbCfg, ok := saveMongoCfg.(map[string]interface{})
|
||||
if ok == false {
|
||||
return fmt.Errorf("RankService.SaveMongo config is error")
|
||||
}
|
||||
@@ -111,7 +111,7 @@ func (mp *MongoPersist) ReadCfg() error {
|
||||
return fmt.Errorf("RankService.SaveMongo.SaveIntervalMs config is error")
|
||||
}
|
||||
|
||||
mp.SaveInterval = time.Duration(saveInterval.(float64))*time.Millisecond
|
||||
mp.SaveInterval = time.Duration(saveInterval.(float64)) * time.Millisecond
|
||||
|
||||
maxRetrySaveCount, ok := mongodbCfg["MaxRetrySaveCount"]
|
||||
if ok == false {
|
||||
@@ -123,16 +123,16 @@ func (mp *MongoPersist) ReadCfg() error {
|
||||
if ok == false {
|
||||
return fmt.Errorf("RankService.SaveMongo.RetryTimeIntervalMs config is error")
|
||||
}
|
||||
mp.retryTimeIntervalMs = time.Duration(retryTimeIntervalMs.(float64))*time.Millisecond
|
||||
mp.retryTimeIntervalMs = time.Duration(retryTimeIntervalMs.(float64)) * time.Millisecond
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
//启服从数据库加载
|
||||
// OnStart 启服从数据库加载
|
||||
func (mp *MongoPersist) OnStart() {
|
||||
}
|
||||
|
||||
func (mp *MongoPersist) OnSetupRank(manual bool,rankSkip *RankSkip) error{
|
||||
func (mp *MongoPersist) OnSetupRank(manual bool, rankSkip *RankSkip) error {
|
||||
if mp.mapRankSkip == nil {
|
||||
mp.mapRankSkip = map[uint64]IRankSkip{}
|
||||
}
|
||||
@@ -142,17 +142,17 @@ func (mp *MongoPersist) OnSetupRank(manual bool,rankSkip *RankSkip) error{
|
||||
return nil
|
||||
}
|
||||
|
||||
log.Info("start load rank ",rankSkip.GetRankName()," from mongodb.")
|
||||
err := mp.loadFromDB(rankSkip.GetRankID(),rankSkip.GetRankName())
|
||||
if err != nil {
|
||||
log.SError("load from db is fail :%s",err.Error())
|
||||
log.Info("start load rank ", rankSkip.GetRankName(), " from mongodb.")
|
||||
err := mp.loadFromDB(rankSkip.GetRankID(), rankSkip.GetRankName())
|
||||
if err != nil {
|
||||
log.SError("load from db is fail :%s", err.Error())
|
||||
return err
|
||||
}
|
||||
log.Info("finish load rank ",rankSkip.GetRankName()," from mongodb.")
|
||||
log.Info("finish load rank ", rankSkip.GetRankName(), " from mongodb.")
|
||||
return nil
|
||||
}
|
||||
|
||||
func (mp *MongoPersist) loadFromDB(rankId uint64,rankCollectName string) error{
|
||||
func (mp *MongoPersist) loadFromDB(rankId uint64, rankCollectName string) error {
|
||||
s := mp.mongo.TakeSession()
|
||||
ctx, cancel := s.GetDefaultContext()
|
||||
defer cancel()
|
||||
@@ -164,14 +164,14 @@ func (mp *MongoPersist) loadFromDB(rankId uint64,rankCollectName string) error{
|
||||
return err
|
||||
}
|
||||
|
||||
if cursor.Err()!=nil {
|
||||
if cursor.Err() != nil {
|
||||
log.SError("find collect name ", rankCollectName, " is error:", cursor.Err().Error())
|
||||
return err
|
||||
}
|
||||
|
||||
rankSkip := mp.mapRankSkip[rankId]
|
||||
if rankSkip == nil {
|
||||
err = fmt.Errorf("rank ", rankCollectName, " is not setup:")
|
||||
err = fmt.Errorf("rank %s is not setup", rankCollectName)
|
||||
log.SError(err.Error())
|
||||
return err
|
||||
}
|
||||
@@ -189,69 +189,68 @@ func (mp *MongoPersist) loadFromDB(rankId uint64,rankCollectName string) error{
|
||||
rankData.Data = rankDataDB.Data
|
||||
rankData.Key = rankDataDB.Id
|
||||
rankData.SortData = rankDataDB.SortData
|
||||
for _,eData := range rankDataDB.ExData{
|
||||
rankData.ExData = append(rankData.ExData,&rpc.ExtendIncData{InitValue:eData})
|
||||
for _, eData := range rankDataDB.ExData {
|
||||
rankData.ExData = append(rankData.ExData, &rpc.ExtendIncData{InitValue: eData})
|
||||
}
|
||||
|
||||
//更新到排行榜
|
||||
rankSkip.UpsetRank(&rankData,rankDataDB.RefreshTime,true)
|
||||
rankSkip.UpsetRank(&rankData, rankDataDB.RefreshTime, true)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (mp *MongoPersist) lazyInitRemoveMap(rankId uint64){
|
||||
func (mp *MongoPersist) lazyInitRemoveMap(rankId uint64) {
|
||||
if mp.mapRemoveRankData[rankId] == nil {
|
||||
mp.mapRemoveRankData[rankId] = make(map[uint64]struct{},256)
|
||||
mp.mapRemoveRankData[rankId] = make(map[uint64]struct{}, 256)
|
||||
}
|
||||
}
|
||||
|
||||
func (mp *MongoPersist) lazyInitUpsertMap(rankId uint64){
|
||||
func (mp *MongoPersist) lazyInitUpsertMap(rankId uint64) {
|
||||
if mp.mapUpsertRankData[rankId] == nil {
|
||||
mp.mapUpsertRankData[rankId] = make(map[uint64]RankData,256)
|
||||
mp.mapUpsertRankData[rankId] = make(map[uint64]RankData, 256)
|
||||
}
|
||||
}
|
||||
|
||||
func (mp *MongoPersist) OnEnterRank(rankSkip IRankSkip, enterData *RankData){
|
||||
func (mp *MongoPersist) OnEnterRank(rankSkip IRankSkip, enterData *RankData) {
|
||||
mp.Lock()
|
||||
defer mp.Unlock()
|
||||
|
||||
delete(mp.mapRemoveRankData,enterData.Key)
|
||||
delete(mp.mapRemoveRankData, enterData.Key)
|
||||
|
||||
mp.lazyInitUpsertMap(rankSkip.GetRankID())
|
||||
mp.mapUpsertRankData[rankSkip.GetRankID()][enterData.Key] = *enterData
|
||||
}
|
||||
|
||||
|
||||
func (mp *MongoPersist) OnLeaveRank(rankSkip IRankSkip, leaveData *RankData){
|
||||
func (mp *MongoPersist) OnLeaveRank(rankSkip IRankSkip, leaveData *RankData) {
|
||||
mp.Lock()
|
||||
defer mp.Unlock()
|
||||
|
||||
//先删掉更新中的数据
|
||||
delete(mp.mapUpsertRankData,leaveData.Key)
|
||||
delete(mp.mapUpsertRankData, leaveData.Key)
|
||||
mp.lazyInitRemoveMap(rankSkip.GetRankID())
|
||||
mp.mapRemoveRankData[rankSkip.GetRankID()][leaveData.Key] = struct{}{}
|
||||
}
|
||||
|
||||
func (mp *MongoPersist) OnChangeRankData(rankSkip IRankSkip, changeData *RankData){
|
||||
func (mp *MongoPersist) OnChangeRankData(rankSkip IRankSkip, changeData *RankData) {
|
||||
mp.Lock()
|
||||
defer mp.Unlock()
|
||||
|
||||
//先删掉要删除的数据
|
||||
delete(mp.mapRemoveRankData,changeData.Key)
|
||||
delete(mp.mapRemoveRankData, changeData.Key)
|
||||
|
||||
//更新数据
|
||||
mp.lazyInitUpsertMap(rankSkip.GetRankID())
|
||||
mp.mapUpsertRankData[rankSkip.GetRankID()][changeData.Key] = *changeData
|
||||
}
|
||||
|
||||
//停存持久化到DB
|
||||
func (mp *MongoPersist) OnStop(mapRankSkip map[uint64]*RankSkip){
|
||||
atomic.StoreInt32(&mp.stop,1)
|
||||
// OnStop 停存持久化到DB
|
||||
func (mp *MongoPersist) OnStop(mapRankSkip map[uint64]*RankSkip) {
|
||||
atomic.StoreInt32(&mp.stop, 1)
|
||||
mp.waitGroup.Wait()
|
||||
}
|
||||
|
||||
func (mp *MongoPersist) JugeTimeoutSave() bool{
|
||||
func (mp *MongoPersist) JudgeTimeoutSave() bool {
|
||||
timeout := time.Now()
|
||||
isTimeOut := timeout.Sub(mp.lastSaveTime) >= mp.SaveInterval
|
||||
if isTimeOut == true {
|
||||
@@ -261,18 +260,18 @@ func (mp *MongoPersist) JugeTimeoutSave() bool{
|
||||
return isTimeOut
|
||||
}
|
||||
|
||||
func (mp *MongoPersist) persistCoroutine(){
|
||||
func (mp *MongoPersist) persistCoroutine() {
|
||||
defer mp.waitGroup.Done()
|
||||
for atomic.LoadInt32(&mp.stop)==0 {
|
||||
for atomic.LoadInt32(&mp.stop) == 0 {
|
||||
//间隔时间sleep
|
||||
time.Sleep(time.Second*1)
|
||||
time.Sleep(time.Second * 1)
|
||||
|
||||
//没有持久化数据continue
|
||||
if mp.hasPersistData() == false {
|
||||
continue
|
||||
}
|
||||
|
||||
if mp.JugeTimeoutSave() == false{
|
||||
if mp.JudgeTimeoutSave() == false {
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -284,20 +283,20 @@ func (mp *MongoPersist) persistCoroutine(){
|
||||
mp.saveToDB()
|
||||
}
|
||||
|
||||
func (mp *MongoPersist) hasPersistData() bool{
|
||||
func (mp *MongoPersist) hasPersistData() bool {
|
||||
mp.Lock()
|
||||
defer mp.Unlock()
|
||||
|
||||
return len(mp.mapUpsertRankData)>0 || len(mp.mapRemoveRankData) >0
|
||||
return len(mp.mapUpsertRankData) > 0 || len(mp.mapRemoveRankData) > 0
|
||||
}
|
||||
|
||||
func (mp *MongoPersist) saveToDB(){
|
||||
func (mp *MongoPersist) saveToDB() {
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
buf := make([]byte, 4096)
|
||||
l := runtime.Stack(buf, false)
|
||||
errString := fmt.Sprint(r)
|
||||
log.Dump(string(buf[:l]),log.String("error",errString))
|
||||
log.Dump(string(buf[:l]), log.String("error", errString))
|
||||
}
|
||||
}()
|
||||
|
||||
@@ -314,13 +313,13 @@ func (mp *MongoPersist) saveToDB(){
|
||||
mp.upsertRankDataToDB(mapUpsertRankData)
|
||||
}
|
||||
|
||||
for len(mapRemoveRankData) >0 {
|
||||
for len(mapRemoveRankData) > 0 {
|
||||
mp.removeRankDataToDB(mapRemoveRankData)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func (mp *MongoPersist) removeToDB(collectName string,keys []uint64) error{
|
||||
func (mp *MongoPersist) removeToDB(collectName string, keys []uint64) error {
|
||||
s := mp.mongo.TakeSession()
|
||||
ctx, cancel := s.GetDefaultContext()
|
||||
defer cancel()
|
||||
@@ -336,16 +335,16 @@ func (mp *MongoPersist) removeToDB(collectName string,keys []uint64) error{
|
||||
return nil
|
||||
}
|
||||
|
||||
func (mp *MongoPersist) removeRankData(rankId uint64,keys []uint64) bool {
|
||||
func (mp *MongoPersist) removeRankData(rankId uint64, keys []uint64) bool {
|
||||
rank := mp.mapRankSkip[rankId]
|
||||
if rank== nil {
|
||||
log.SError("cannot find rankId ",rankId,"config")
|
||||
if rank == nil {
|
||||
log.SError("cannot find rankId ", rankId, "config")
|
||||
return false
|
||||
}
|
||||
|
||||
//不成功则重试maxRetrySaveCount次
|
||||
for i:=0;i<mp.maxRetrySaveCount;i++{
|
||||
if mp.removeToDB(rank.GetRankName(),keys)!= nil {
|
||||
for i := 0; i < mp.maxRetrySaveCount; i++ {
|
||||
if mp.removeToDB(rank.GetRankName(), keys) != nil {
|
||||
time.Sleep(mp.retryTimeIntervalMs)
|
||||
continue
|
||||
}
|
||||
@@ -355,9 +354,9 @@ func (mp *MongoPersist) removeRankData(rankId uint64,keys []uint64) bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (mp *MongoPersist) upsertToDB(collectName string,rankData *RankData) error{
|
||||
func (mp *MongoPersist) upsertToDB(collectName string, rankData *RankData) error {
|
||||
condition := bson.D{{"_id", rankData.Key}}
|
||||
upsert := bson.M{"_id":rankData.Key,"RefreshTime": rankData.RefreshTimestamp, "SortData": rankData.SortData, "Data": rankData.Data,"ExData":rankData.ExData}
|
||||
upsert := bson.M{"_id": rankData.Key, "RefreshTime": rankData.RefreshTimestamp, "SortData": rankData.SortData, "Data": rankData.Data, "ExData": rankData.ExData}
|
||||
update := bson.M{"$set": upsert}
|
||||
|
||||
s := mp.mongo.TakeSession()
|
||||
@@ -365,7 +364,7 @@ func (mp *MongoPersist) upsertToDB(collectName string,rankData *RankData) error{
|
||||
defer cancel()
|
||||
|
||||
updateOpts := options.Update().SetUpsert(true)
|
||||
_, err := s.Collection(mp.dbName, collectName).UpdateOne(ctx, condition,update,updateOpts)
|
||||
_, err := s.Collection(mp.dbName, collectName).UpdateOne(ctx, condition, update, updateOpts)
|
||||
if err != nil {
|
||||
log.SError("MongoPersist upsertDB fail,collect name is ", collectName)
|
||||
return err
|
||||
@@ -374,19 +373,19 @@ func (mp *MongoPersist) upsertToDB(collectName string,rankData *RankData) error{
|
||||
return nil
|
||||
}
|
||||
|
||||
func (mp *MongoPersist) upsertRankDataToDB(mapUpsertRankData map[uint64]map[uint64]RankData) error{
|
||||
for rankId,mapRankData := range mapUpsertRankData{
|
||||
rank,ok := mp.mapRankSkip[rankId]
|
||||
func (mp *MongoPersist) upsertRankDataToDB(mapUpsertRankData map[uint64]map[uint64]RankData) error {
|
||||
for rankId, mapRankData := range mapUpsertRankData {
|
||||
rank, ok := mp.mapRankSkip[rankId]
|
||||
if ok == false {
|
||||
log.SError("cannot find rankId ",rankId,",config is error")
|
||||
delete(mapUpsertRankData,rankId)
|
||||
log.SError("cannot find rankId ", rankId, ",config is error")
|
||||
delete(mapUpsertRankData, rankId)
|
||||
continue
|
||||
}
|
||||
|
||||
for key,rankData := range mapRankData{
|
||||
for key, rankData := range mapRankData {
|
||||
//最大重试mp.maxRetrySaveCount次
|
||||
for i:=0;i<mp.maxRetrySaveCount;i++{
|
||||
err := mp.upsertToDB(rank.GetRankName(),&rankData)
|
||||
for i := 0; i < mp.maxRetrySaveCount; i++ {
|
||||
err := mp.upsertToDB(rank.GetRankName(), &rankData)
|
||||
if err != nil {
|
||||
time.Sleep(mp.retryTimeIntervalMs)
|
||||
continue
|
||||
@@ -395,11 +394,11 @@ func (mp *MongoPersist) upsertRankDataToDB(mapUpsertRankData map[uint64]map[uint
|
||||
}
|
||||
|
||||
//存完删掉指定key
|
||||
delete(mapRankData,key)
|
||||
delete(mapRankData, key)
|
||||
}
|
||||
|
||||
if len(mapRankData) == 0 {
|
||||
delete(mapUpsertRankData,rankId)
|
||||
delete(mapUpsertRankData, rankId)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -407,23 +406,22 @@ func (mp *MongoPersist) upsertRankDataToDB(mapUpsertRankData map[uint64]map[uint
|
||||
}
|
||||
|
||||
func (mp *MongoPersist) removeRankDataToDB(mapRemoveRankData map[uint64]map[uint64]struct{}) {
|
||||
for rankId ,mapRemoveKey := range mapRemoveRankData{
|
||||
for rankId, mapRemoveKey := range mapRemoveRankData {
|
||||
//每100个一删
|
||||
keyList := make([]uint64,0,batchRemoveNum)
|
||||
for key := range mapRemoveKey {
|
||||
delete(mapRemoveKey,key)
|
||||
keyList = append(keyList,key)
|
||||
if len(keyList) >= batchRemoveNum {
|
||||
break
|
||||
}
|
||||
}
|
||||
keyList := make([]uint64, 0, batchRemoveNum)
|
||||
for key := range mapRemoveKey {
|
||||
delete(mapRemoveKey, key)
|
||||
keyList = append(keyList, key)
|
||||
if len(keyList) >= batchRemoveNum {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
mp.removeRankData(rankId,keyList)
|
||||
mp.removeRankData(rankId, keyList)
|
||||
|
||||
//如果删完,删掉rankid下所有
|
||||
if len(mapRemoveKey) == 0 {
|
||||
delete(mapRemoveRankData,rankId)
|
||||
}
|
||||
if len(mapRemoveKey) == 0 {
|
||||
delete(mapRemoveRankData, rankId)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package rankservice
|
||||
|
||||
import (
|
||||
"github.com/duanhf2012/origin/v2/service"
|
||||
"github.com/duanhf2012/origin/v2/rpc"
|
||||
"github.com/duanhf2012/origin/v2/service"
|
||||
)
|
||||
|
||||
type RankDataChangeType int8
|
||||
@@ -11,19 +11,18 @@ type IRankSkip interface {
|
||||
GetRankID() uint64
|
||||
GetRankName() string
|
||||
GetRankLen() uint64
|
||||
UpsetRank(upsetData *rpc.RankData,refreshTimestamp int64,fromLoad bool) RankDataChangeType
|
||||
UpsetRank(upsetData *rpc.RankData, refreshTimestamp int64, fromLoad bool) RankDataChangeType
|
||||
}
|
||||
|
||||
type IRankModule interface {
|
||||
service.IModule
|
||||
|
||||
|
||||
OnSetupRank(manual bool,rankSkip *RankSkip) error //当完成安装排行榜对象时
|
||||
OnStart() //服务开启时回调
|
||||
OnSetupRank(manual bool, rankSkip *RankSkip) error //当完成安装排行榜对象时
|
||||
OnStart() //服务开启时回调
|
||||
OnEnterRank(rankSkip IRankSkip, enterData *RankData) //进入排行
|
||||
OnLeaveRank(rankSkip IRankSkip, leaveData *RankData) //离开排行
|
||||
OnChangeRankData(rankSkip IRankSkip, changeData *RankData) //当排行数据变化时
|
||||
OnStop(mapRankSkip map[uint64]*RankSkip) //服务结束时回调
|
||||
OnStop(mapRankSkip map[uint64]*RankSkip) //服务结束时回调
|
||||
}
|
||||
|
||||
type DefaultRankModule struct {
|
||||
|
||||
@@ -45,7 +45,7 @@ func (rs *RankService) OnRelease() {
|
||||
rs.rankModule.OnStop(rs.mapRankSkip)
|
||||
}
|
||||
|
||||
// 安装排行模块
|
||||
// SetupRankModule 安装排行模块
|
||||
func (rs *RankService) SetupRankModule(rankModule IRankModule) {
|
||||
rs.rankModule = rankModule
|
||||
}
|
||||
|
||||
@@ -342,7 +342,7 @@ func (rs *RankSkip) GetRankNodeData(findKey uint64) (*RankData, uint64) {
|
||||
return rankNode, index + 1
|
||||
}
|
||||
|
||||
// GetRankNodeDataByPos 获取,返回排名节点与名次
|
||||
// GetRankNodeDataByRank 获取,返回排名节点与名次
|
||||
func (rs *RankSkip) GetRankNodeDataByRank(rank uint64) (*RankData, uint64) {
|
||||
rs.pickExpireKey()
|
||||
rankNode := rs.skipList.ByPosition(rank - 1)
|
||||
@@ -382,7 +382,7 @@ func (rs *RankSkip) GetRankKeyPrevToLimit(findKey, count uint64, result *rpc.Ran
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetRankKeyPrevToLimit 获取key前count名的数据
|
||||
// GetRankKeyNextToLimit 获取key前count名的数据
|
||||
func (rs *RankSkip) GetRankKeyNextToLimit(findKey, count uint64, result *rpc.RankDataList) error {
|
||||
if rs.GetRankLen() <= 0 {
|
||||
return fmt.Errorf("rank[%d] no data", rs.rankId)
|
||||
@@ -411,7 +411,7 @@ func (rs *RankSkip) GetRankKeyNextToLimit(findKey, count uint64, result *rpc.Ran
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetRankList 获取排行榜数据,startPos开始的count个数据
|
||||
// GetRankDataFromToLimit 获取排行榜数据,startPos开始的count个数据
|
||||
func (rs *RankSkip) GetRankDataFromToLimit(startPos, count uint64, result *rpc.RankDataList) error {
|
||||
if rs.GetRankLen() <= 0 {
|
||||
//初始排行榜可能没有数据
|
||||
|
||||
Reference in New Issue
Block a user