优化排行榜RankService,支持RPC接口新增排行榜功能

This commit is contained in:
orgin
2022-11-23 17:22:58 +08:00
parent 975cf93d58
commit afb04cac7f
6 changed files with 145 additions and 134 deletions

View File

@@ -161,10 +161,11 @@ func (m *RankPosData) GetData() []byte {
// RankList 排行榜数据
type RankList struct {
RankId uint64 `protobuf:"varint,1,opt,name=RankId,proto3" json:"RankId,omitempty"`
SkipListLevel int32 `protobuf:"varint,2,opt,name=SkipListLevel,proto3" json:"SkipListLevel,omitempty"`
IsDec bool `protobuf:"varint,3,opt,name=IsDec,proto3" json:"IsDec,omitempty"`
MaxRank uint64 `protobuf:"varint,4,opt,name=MaxRank,proto3" json:"MaxRank,omitempty"`
ExpireMs int64 `protobuf:"varint,5,opt,name=ExpireMs,proto3" json:"ExpireMs,omitempty"`
RankName string `protobuf:"bytes,2,opt,name=RankName,proto3" json:"RankName,omitempty"`
SkipListLevel int32 `protobuf:"varint,3,opt,name=SkipListLevel,proto3" json:"SkipListLevel,omitempty"`
IsDec bool `protobuf:"varint,4,opt,name=IsDec,proto3" json:"IsDec,omitempty"`
MaxRank uint64 `protobuf:"varint,5,opt,name=MaxRank,proto3" json:"MaxRank,omitempty"`
ExpireMs int64 `protobuf:"varint,6,opt,name=ExpireMs,proto3" json:"ExpireMs,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@@ -210,6 +211,13 @@ func (m *RankList) GetRankId() uint64 {
return 0
}
func (m *RankList) GetRankName() string {
if m != nil {
return m.RankName
}
return ""
}
func (m *RankList) GetSkipListLevel() int32 {
if m != nil {
return m.SkipListLevel
@@ -727,38 +735,39 @@ func init() {
func init() { proto.RegisterFile("proto/rpcproto/rank.proto", fileDescriptor_d5b64eda47521620) }
var fileDescriptor_d5b64eda47521620 = []byte{
// 489 bytes of a gzipped FileDescriptorProto
// 502 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x54, 0x51, 0x8b, 0xd3, 0x40,
0x10, 0x66, 0x9b, 0xe4, 0x5a, 0x27, 0x57, 0xac, 0xab, 0x48, 0x14, 0x29, 0x61, 0x11, 0x2c, 0x3e,
0x54, 0x54, 0xf0, 0x41, 0x11, 0xed, 0x59, 0x85, 0xe3, 0x5a, 0x90, 0x2d, 0xbe, 0xdc, 0x5b, 0xcc,
0xae, 0x10, 0x5a, 0x9b, 0x65, 0xb3, 0x77, 0x5c, 0xff, 0x87, 0x8f, 0xfe, 0x20, 0x1f, 0xfd, 0x09,
0xd2, 0x5f, 0x22, 0xb3, 0xc9, 0xa6, 0xc9, 0x71, 0xb9, 0xa7, 0xce, 0x37, 0x33, 0x3b, 0xdf, 0xd7,
0xf9, 0xa6, 0x85, 0x47, 0x4a, 0xe7, 0x26, 0x7f, 0xa1, 0x55, 0x5a, 0x05, 0xc9, 0x76, 0x3d, 0xb5,
0x21, 0xf5, 0xb4, 0x4a, 0xd9, 0x02, 0x06, 0x3c, 0xd9, 0xae, 0xe7, 0x89, 0x49, 0xe8, 0x08, 0xbc,
0x33, 0xb9, 0x8b, 0x48, 0x4c, 0x26, 0x3e, 0xc7, 0x90, 0x3e, 0x86, 0xc1, 0x2a, 0xd7, 0x06, 0xab,
0x51, 0x2f, 0xf6, 0x26, 0x1e, 0xaf, 0x31, 0xa5, 0xe0, 0xdb, 0xbc, 0x17, 0x93, 0xc9, 0x31, 0xb7,
0x31, 0x4b, 0x21, 0xc4, 0x69, 0x5f, 0xf3, 0xa2, 0x63, 0x20, 0x05, 0x1f, 0x1b, 0xa2, 0x9e, 0x4d,
0xd9, 0xb8, 0x45, 0xe2, 0x75, 0x90, 0xf8, 0x0d, 0x92, 0x5f, 0xa4, 0xd4, 0xbc, 0xc8, 0x0a, 0x43,
0x1f, 0xc2, 0x11, 0xc6, 0xa7, 0xa2, 0x62, 0xa9, 0x10, 0x7d, 0x0a, 0xc3, 0xd5, 0x3a, 0x53, 0xd8,
0xb3, 0x90, 0x97, 0x72, 0x63, 0x19, 0x03, 0xde, 0x4e, 0xd2, 0x07, 0x10, 0x9c, 0x16, 0x73, 0x99,
0xda, 0x2f, 0x31, 0xe0, 0x25, 0xa0, 0x11, 0xf4, 0x97, 0xc9, 0x95, 0xd5, 0xe9, 0xdb, 0xa1, 0x0e,
0xa2, 0xd4, 0xcf, 0x57, 0x2a, 0xd3, 0x72, 0x59, 0x44, 0x41, 0x4c, 0x50, 0xaa, 0xc3, 0xec, 0x1c,
0x86, 0xdf, 0x54, 0x21, 0x4d, 0xbd, 0xce, 0x2e, 0x69, 0x2f, 0xe1, 0xd8, 0xf5, 0xa0, 0x12, 0xbb,
0xd8, 0xf0, 0xd5, 0x70, 0xaa, 0x55, 0x3a, 0x75, 0x05, 0xde, 0x6a, 0x61, 0x1f, 0x20, 0x9c, 0xcb,
0x8d, 0x34, 0xf2, 0x64, 0x87, 0x5b, 0xec, 0x9a, 0x1c, 0x41, 0xff, 0x4c, 0xee, 0xea, 0xa1, 0x3e,
0x77, 0x90, 0xbd, 0x81, 0x70, 0x26, 0x44, 0xbd, 0xb5, 0x67, 0xd0, 0x9f, 0x09, 0x61, 0x1b, 0xc9,
0x35, 0x76, 0x4c, 0x72, 0x57, 0x65, 0xef, 0xe1, 0xde, 0x97, 0x6c, 0x2b, 0x9c, 0x98, 0xdb, 0xe9,
0x2b, 0xbb, 0x7b, 0xb5, 0xdd, 0xec, 0x23, 0xd0, 0xf6, 0x73, 0xbb, 0xc5, 0xae, 0xf7, 0x37, 0x1c,
0x07, 0x53, 0x30, 0x6a, 0x4e, 0xb8, 0xd5, 0xf3, 0x27, 0x70, 0x67, 0x65, 0x12, 0x6d, 0x1a, 0x43,
0x0e, 0x09, 0xf4, 0xfa, 0x53, 0x7e, 0xb1, 0x35, 0xd6, 0x6b, 0x9f, 0x97, 0xc0, 0x69, 0xf6, 0x0f,
0x9a, 0x7f, 0x93, 0xb6, 0x3f, 0x78, 0x4a, 0x0e, 0x97, 0x03, 0x4a, 0xd6, 0x76, 0x92, 0xbe, 0x85,
0xbb, 0x8d, 0xd3, 0x6f, 0x18, 0x3b, 0xaa, 0x57, 0x5b, 0xd5, 0xf8, 0xf5, 0x46, 0xfa, 0xdc, 0xfa,
0x66, 0x65, 0xa3, 0xb8, 0x9b, 0xde, 0xb8, 0x06, 0xb6, 0x01, 0xc0, 0x4f, 0x2e, 0x8b, 0x8b, 0x8d,
0xc1, 0x83, 0x9c, 0x09, 0x71, 0x90, 0x15, 0xf0, 0x1a, 0xd3, 0x18, 0xc2, 0x65, 0x2e, 0xb2, 0x1f,
0xbb, 0xb2, 0x5c, 0xfe, 0x00, 0x9a, 0x29, 0xec, 0xe0, 0xf2, 0x67, 0x7e, 0x29, 0x0f, 0x8b, 0x09,
0x78, 0x33, 0x75, 0x72, 0xff, 0xcf, 0x7e, 0x4c, 0xfe, 0xee, 0xc7, 0xe4, 0xdf, 0x7e, 0x4c, 0xce,
0x83, 0xe9, 0x3b, 0xad, 0xd2, 0xef, 0x47, 0xf6, 0xff, 0xe3, 0xf5, 0xff, 0x00, 0x00, 0x00, 0xff,
0xff, 0x5b, 0x21, 0xc1, 0xf8, 0x5c, 0x04, 0x00, 0x00,
0x10, 0x66, 0x9b, 0xa4, 0xed, 0x4d, 0xae, 0x58, 0x57, 0x91, 0x28, 0x52, 0x42, 0x10, 0x2c, 0x3e,
0x54, 0x54, 0xf0, 0x41, 0x11, 0xed, 0x59, 0x85, 0xe3, 0x5a, 0x91, 0x2d, 0xbe, 0xdc, 0x5b, 0x4c,
0x56, 0x08, 0xed, 0x35, 0x4b, 0xb2, 0x77, 0x5c, 0xff, 0x8b, 0x3f, 0xc2, 0x9f, 0xe1, 0xa3, 0x3f,
0x41, 0xfa, 0x4b, 0x8e, 0x99, 0x64, 0xd3, 0xe4, 0xb8, 0xf4, 0xa9, 0xf3, 0xcd, 0xcc, 0x7e, 0xdf,
0xb7, 0xb3, 0xd3, 0xc0, 0x63, 0x95, 0xa5, 0x3a, 0x7d, 0x99, 0xa9, 0xa8, 0x0c, 0xc2, 0xcd, 0x6a,
0x42, 0x21, 0xb7, 0x32, 0x15, 0x05, 0x73, 0xe8, 0x8b, 0x70, 0xb3, 0x9a, 0x85, 0x3a, 0xe4, 0x43,
0xb0, 0xce, 0xe4, 0xd6, 0x63, 0x3e, 0x1b, 0xdb, 0x02, 0x43, 0xfe, 0x04, 0xfa, 0xcb, 0x34, 0xd3,
0x58, 0xf5, 0x3a, 0xbe, 0x35, 0xb6, 0x44, 0x85, 0x39, 0x07, 0x9b, 0xf2, 0x96, 0xcf, 0xc6, 0xc7,
0x82, 0xe2, 0x20, 0x02, 0x17, 0xd9, 0xbe, 0xa7, 0x79, 0x0b, 0x21, 0x07, 0x1b, 0x1b, 0xbc, 0x0e,
0xa5, 0x28, 0x6e, 0x88, 0x58, 0x2d, 0x22, 0x76, 0x4d, 0xe4, 0x0f, 0x2b, 0x3c, 0xcf, 0x93, 0x5c,
0xf3, 0x47, 0xd0, 0xc5, 0xf8, 0x34, 0x2e, 0x55, 0x4a, 0x84, 0xa4, 0x18, 0x7d, 0x0b, 0x2f, 0x24,
0x89, 0x1d, 0x89, 0x0a, 0xf3, 0x67, 0x30, 0x58, 0xae, 0x12, 0x85, 0xe7, 0xe7, 0xf2, 0x4a, 0xae,
0xe9, 0x0a, 0x8e, 0x68, 0x26, 0xf9, 0x43, 0x70, 0x4e, 0xf3, 0x99, 0x8c, 0x48, 0xbb, 0x2f, 0x0a,
0xc0, 0x3d, 0xe8, 0x2d, 0xc2, 0x6b, 0xba, 0x83, 0x43, 0x82, 0x06, 0xa2, 0xe2, 0x97, 0x6b, 0x95,
0x64, 0x72, 0x91, 0x7b, 0x5d, 0x9f, 0xe1, 0x35, 0x0c, 0x0e, 0xce, 0x61, 0xf0, 0x43, 0xe5, 0x52,
0x57, 0xa3, 0x6e, 0xb3, 0xfd, 0x0a, 0x8e, 0x4d, 0x0f, 0x3a, 0xa1, 0xa1, 0xbb, 0xaf, 0x07, 0x93,
0x4c, 0x45, 0x13, 0x53, 0x10, 0x8d, 0x96, 0xe0, 0x23, 0xb8, 0x33, 0xb9, 0x96, 0x5a, 0x9e, 0x6c,
0x71, 0xc2, 0x6d, 0xcc, 0x1e, 0xf4, 0xce, 0xe4, 0xb6, 0x22, 0xb5, 0x85, 0x81, 0xc1, 0x5b, 0x70,
0xa7, 0x71, 0x5c, 0x4d, 0xf4, 0x39, 0xf4, 0xa6, 0x71, 0x4c, 0x8d, 0xec, 0x96, 0x3a, 0x26, 0x85,
0xa9, 0x06, 0x1f, 0xe0, 0xfe, 0xd7, 0x64, 0x13, 0x1b, 0x33, 0x87, 0xe5, 0xcb, 0x55, 0xe8, 0x54,
0xab, 0x10, 0x7c, 0x02, 0xde, 0x3c, 0x4e, 0x53, 0x6c, 0x3b, 0x7f, 0xc7, 0xe2, 0x04, 0x0a, 0x86,
0x75, 0x86, 0x83, 0xfb, 0xf0, 0x14, 0x8e, 0x96, 0x3a, 0xcc, 0x74, 0x8d, 0x64, 0x9f, 0xc0, 0xb7,
0xfe, 0x9c, 0x5e, 0x6e, 0x34, 0x6d, 0x82, 0x2d, 0x0a, 0x60, 0x3c, 0xdb, 0x7b, 0xcf, 0xbf, 0x59,
0xf3, 0x7d, 0x70, 0x95, 0x0c, 0x2e, 0x08, 0x0a, 0xd5, 0x66, 0x92, 0xbf, 0x83, 0x7b, 0xb5, 0xbf,
0x45, 0xed, 0x61, 0x87, 0xd5, 0x68, 0xcb, 0x9a, 0xb8, 0xdd, 0xc8, 0x5f, 0xd0, 0xbb, 0x91, 0x6d,
0x34, 0x77, 0xd7, 0x19, 0xd3, 0x10, 0xac, 0x01, 0xf0, 0x57, 0xc8, 0xfc, 0x72, 0xad, 0x71, 0x21,
0xa7, 0x71, 0xbc, 0xb7, 0xe5, 0x88, 0x0a, 0x73, 0x1f, 0xdc, 0x45, 0x1a, 0x27, 0xbf, 0xb6, 0x45,
0xb9, 0x43, 0xe5, 0x7a, 0x0a, 0x3b, 0x84, 0xbc, 0x48, 0xaf, 0xe4, 0x7e, 0x30, 0x8e, 0xa8, 0xa7,
0x4e, 0x1e, 0xfc, 0xdd, 0x8d, 0xd8, 0xbf, 0xdd, 0x88, 0xfd, 0xdf, 0x8d, 0xd8, 0xb9, 0x33, 0x79,
0x9f, 0xa9, 0xe8, 0x67, 0x97, 0xbe, 0x2d, 0x6f, 0x6e, 0x02, 0x00, 0x00, 0xff, 0xff, 0x95, 0xfb,
0xbc, 0xc4, 0x78, 0x04, 0x00, 0x00,
}
func (m *RankData) Marshal() (dAtA []byte, err error) {
@@ -909,12 +918,12 @@ func (m *RankList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
if m.ExpireMs != 0 {
i = encodeVarintRank(dAtA, i, uint64(m.ExpireMs))
i--
dAtA[i] = 0x28
dAtA[i] = 0x30
}
if m.MaxRank != 0 {
i = encodeVarintRank(dAtA, i, uint64(m.MaxRank))
i--
dAtA[i] = 0x20
dAtA[i] = 0x28
}
if m.IsDec {
i--
@@ -924,12 +933,19 @@ func (m *RankList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
dAtA[i] = 0
}
i--
dAtA[i] = 0x18
dAtA[i] = 0x20
}
if m.SkipListLevel != 0 {
i = encodeVarintRank(dAtA, i, uint64(m.SkipListLevel))
i--
dAtA[i] = 0x10
dAtA[i] = 0x18
}
if len(m.RankName) > 0 {
i -= len(m.RankName)
copy(dAtA[i:], m.RankName)
i = encodeVarintRank(dAtA, i, uint64(len(m.RankName)))
i--
dAtA[i] = 0x12
}
if m.RankId != 0 {
i = encodeVarintRank(dAtA, i, uint64(m.RankId))
@@ -1372,6 +1388,10 @@ func (m *RankList) Size() (n int) {
if m.RankId != 0 {
n += 1 + sovRank(uint64(m.RankId))
}
l = len(m.RankName)
if l > 0 {
n += 1 + l + sovRank(uint64(l))
}
if m.SkipListLevel != 0 {
n += 1 + sovRank(uint64(m.SkipListLevel))
}
@@ -1997,6 +2017,38 @@ func (m *RankList) Unmarshal(dAtA []byte) error {
}
}
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field RankName", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowRank
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthRank
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthRank
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.RankName = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 3:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field SkipListLevel", wireType)
}
@@ -2015,7 +2067,7 @@ func (m *RankList) Unmarshal(dAtA []byte) error {
break
}
}
case 3:
case 4:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field IsDec", wireType)
}
@@ -2035,7 +2087,7 @@ func (m *RankList) Unmarshal(dAtA []byte) error {
}
}
m.IsDec = bool(v != 0)
case 4:
case 5:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field MaxRank", wireType)
}
@@ -2054,7 +2106,7 @@ func (m *RankList) Unmarshal(dAtA []byte) error {
break
}
}
case 5:
case 6:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field ExpireMs", wireType)
}

View File

@@ -20,10 +20,11 @@ message RankPosData {
// RankList 排行榜数据
message RankList {
uint64 RankId = 1; //排行榜类型
int32 SkipListLevel = 2; //排行榜level-生成的跳表的level, 8/16/32/64等
bool IsDec = 3; //不参与排行的数据
uint64 MaxRank = 4; //最大排名
int64 ExpireMs = 5;//有效时间毫秒,0表示永不过期
string RankName = 2; //排行榜名称
int32 SkipListLevel = 3; //排行榜level-生成的跳表的level, 8/16/32/64等
bool IsDec = 4; //不参与排行的数据
uint64 MaxRank = 5; //最大排名
int64 ExpireMs = 6; //有效时间0永不过期
}
// UpsetRankData 更新排行榜数据
@@ -60,12 +61,14 @@ message FindRankDataList {
uint64 RankId = 1; //排行榜的ID
uint64 StartRank = 2; //排行的位置 0开始
uint64 Count = 3; //查询格式
uint64 Key = 4; //附带一个Key查询排行信息
}
// RankDataList
message RankDataList {
uint64 RankDataCount = 1; //排行长度
repeated RankPosData RankPosDataList = 2; //排行数据
RankPosData KeyRank = 3; //附带的Key查询排行结果信息
}
// RankResult

View File

@@ -129,20 +129,23 @@ func (mp *MongoPersist) ReadCfg() error {
func (mp *MongoPersist) OnStart() {
}
func (mp *MongoPersist) OnFinishSetupRank(mapRankSkip map[uint64]*RankSkip) error{
mp.mapRankSkip = map[uint64]IRankSkip{}
for rankId,rank := range mapRankSkip {
mp.mapRankSkip[rankId] = rank
func (mp *MongoPersist) OnSetupRank(manual bool,rankSkip *RankSkip) error{
if mp.mapRankSkip == nil {
mp.mapRankSkip = map[uint64]IRankSkip{}
}
for rankId,rank := range mp.mapRankSkip{
err := mp.loadFromDB(rankId,rank.GetRankName())
if err != nil {
log.SError("load from db is fail :%s",err.Error())
return err
}
mp.mapRankSkip[rankSkip.GetRankID()] = rankSkip
if manual == true {
return nil
}
log.SRelease("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.SRelease("finish load rank ",rankSkip.GetRankName()," from mongodb.")
return nil
}

View File

@@ -17,7 +17,8 @@ type IRankSkip interface {
type IRankModule interface {
service.IModule
OnFinishSetupRank(map[uint64]*RankSkip) error //当完成安装排行榜对象时
OnSetupRank(manual bool,rankSkip *RankSkip) error //当完成安装排行榜对象时
OnStart() //服务开启时回调
OnEnterRank(rankSkip IRankSkip, enterData *RankData) //进入排行
OnLeaveRank(rankSkip IRankSkip, leaveData *RankData) //离开排行

View File

@@ -48,6 +48,30 @@ func (rs *RankService) SetupRankModule(rankModule IRankModule) {
rs.rankModule = rankModule
}
// RPC_ManualAddRankSkip 提供手动添加排行榜
func (rs *RankService) RPC_ManualAddRankSkip(addInfo *rpc.AddRankList, addResult *rpc.RankResult) error {
for _, addRankListData := range addInfo.AddList {
if addRankListData.RankId == 0 {
return fmt.Errorf("RPC_AddRankSkip must has rank id")
}
//重复的排行榜信息不允许添加
rank := rs.mapRankSkip[addRankListData.RankId]
if rank != nil {
continue
}
newSkip := NewRankSkip(addRankListData.RankId,addRankListData.RankName,addRankListData.IsDec, transformLevel(addRankListData.SkipListLevel), addRankListData.MaxRank,time.Duration(addRankListData.ExpireMs)*time.Millisecond)
newSkip.SetupRankModule(rs.rankModule)
rs.mapRankSkip[addRankListData.RankId] = newSkip
rs.rankModule.OnSetupRank(true,newSkip)
}
addResult.AddCount = 1
return nil
}
// RPC_UpsetRank 更新排行榜
func (rs *RankService) RPC_UpsetRank(upsetInfo *rpc.UpsetRankData, upsetResult *rpc.RankResult) error {
rankSkip, ok := rs.mapRankSkip[upsetInfo.RankId]
@@ -187,9 +211,13 @@ func (rs *RankService) dealCfg() error {
newSkip := NewRankSkip(uint64(rankId),rankName,isDec, transformLevel(int32(level)), uint64(maxRank),time.Duration(expireMs)*time.Millisecond)
newSkip.SetupRankModule(rs.rankModule)
rs.mapRankSkip[uint64(rankId)] = newSkip
err := rs.rankModule.OnSetupRank(false,newSkip)
if err != nil {
return err
}
}
return rs.rankModule.OnFinishSetupRank(rs.mapRankSkip)
return nil
}

View File

@@ -1,76 +0,0 @@
syntax = "proto3";
package rpc;
option go_package = ".;rpc";
// RankData 排行数据
message RankData {
uint64 Key = 1; //数据主建
repeated int64 SortData = 2; //参与排行的数据
bytes Data = 3; //不参与排行的数据
int64 expireMs = 4; //剩余有效时间毫秒如果为0永不过期
}
// RankPosData 排行数据——查询返回
message RankPosData {
uint64 Key = 1; //数据主建
uint64 RankPos = 2; //名次
repeated int64 SortData = 3; //参与排行的数据
bytes Data = 4; //不参与排行的数据
}
// RankList 排行榜数据
message RankList {
uint64 RankId = 1; //排行榜类型
int32 SkipListLevel = 2; //排行榜level-生成的跳表的level, 8/16/32/64等
bool IsDec = 3; //不参与排行的数据
uint64 MaxRank = 4; //最大排名
}
// UpsetRankData 更新排行榜数据
message UpsetRankData {
uint64 RankId = 1; //排行榜的ID
repeated RankData RankDataList = 2; //排行数据
}
// DeleteByKey 更新排行榜数据
message DeleteByKey {
uint64 RankId = 1; //排行榜的分类ID
repeated uint64 KeyList = 2; //排行数据
}
// AddRankList 新增排行榜
message AddRankList {
repeated RankList AddList = 1; //添加的排行榜列表
}
// FindRankDataByKey 查找排行信息
message FindRankDataByKey {
uint64 RankId = 1; //排行榜的ID
uint64 Key = 2; //排行的key
}
// FindRankDataByPos 查找排行信息
message FindRankDataByPos {
uint64 RankId = 1; //排行榜的ID
uint64 Pos = 2; //排行名次
}
// FindRankDataListStartTo 查找排行信息,StartPos开始Count个
message FindRankDataListStartTo {
uint64 RankId = 1; //排行榜的ID
uint64 StartPos = 2; //排行的位置 0开始
uint64 Count = 3; //查询格式
}
// RankDataList
message RankDataList {
uint64 RankDataCount = 1; //排行长度
repeated RankPosData RankPosDataList = 2; //排行数据
}
// RankResult
message RankResult {
int32 AddCount = 1; //增加记录
int32 RemoveCount = 2; //删除数量
int32 ModifyCount = 3; //修改数量
}