优化RankService排行榜服务

This commit is contained in:
orgin
2022-11-19 16:00:16 +08:00
parent 95b4e2f8de
commit 5bea050f63
7 changed files with 457 additions and 230 deletions

View File

@@ -27,7 +27,6 @@ type RankData struct {
Key uint64 `protobuf:"varint,1,opt,name=Key,proto3" json:"Key,omitempty"` Key uint64 `protobuf:"varint,1,opt,name=Key,proto3" json:"Key,omitempty"`
SortData []int64 `protobuf:"varint,2,rep,packed,name=SortData,proto3" json:"SortData,omitempty"` SortData []int64 `protobuf:"varint,2,rep,packed,name=SortData,proto3" json:"SortData,omitempty"`
Data []byte `protobuf:"bytes,3,opt,name=Data,proto3" json:"Data,omitempty"` Data []byte `protobuf:"bytes,3,opt,name=Data,proto3" json:"Data,omitempty"`
ExpireMs int64 `protobuf:"varint,4,opt,name=expireMs,proto3" json:"expireMs,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
@@ -87,17 +86,10 @@ func (m *RankData) GetData() []byte {
return nil return nil
} }
func (m *RankData) GetExpireMs() int64 {
if m != nil {
return m.ExpireMs
}
return 0
}
// RankPosData 排行数据——查询返回 // RankPosData 排行数据——查询返回
type RankPosData struct { type RankPosData struct {
Key uint64 `protobuf:"varint,1,opt,name=Key,proto3" json:"Key,omitempty"` Key uint64 `protobuf:"varint,1,opt,name=Key,proto3" json:"Key,omitempty"`
RankPos uint64 `protobuf:"varint,2,opt,name=RankPos,proto3" json:"RankPos,omitempty"` Rank uint64 `protobuf:"varint,2,opt,name=Rank,proto3" json:"Rank,omitempty"`
SortData []int64 `protobuf:"varint,3,rep,packed,name=SortData,proto3" json:"SortData,omitempty"` SortData []int64 `protobuf:"varint,3,rep,packed,name=SortData,proto3" json:"SortData,omitempty"`
Data []byte `protobuf:"bytes,4,opt,name=Data,proto3" json:"Data,omitempty"` Data []byte `protobuf:"bytes,4,opt,name=Data,proto3" json:"Data,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -145,9 +137,9 @@ func (m *RankPosData) GetKey() uint64 {
return 0 return 0
} }
func (m *RankPosData) GetRankPos() uint64 { func (m *RankPosData) GetRank() uint64 {
if m != nil { if m != nil {
return m.RankPos return m.Rank
} }
return 0 return 0
} }
@@ -172,6 +164,7 @@ type RankList struct {
SkipListLevel int32 `protobuf:"varint,2,opt,name=SkipListLevel,proto3" json:"SkipListLevel,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"` IsDec bool `protobuf:"varint,3,opt,name=IsDec,proto3" json:"IsDec,omitempty"`
MaxRank uint64 `protobuf:"varint,4,opt,name=MaxRank,proto3" json:"MaxRank,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"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
@@ -238,6 +231,13 @@ func (m *RankList) GetMaxRank() uint64 {
return 0 return 0
} }
func (m *RankList) GetExpireMs() int64 {
if m != nil {
return m.ExpireMs
}
return 0
}
// UpsetRankData 更新排行榜数据 // UpsetRankData 更新排行榜数据
type UpsetRankData struct { type UpsetRankData struct {
RankId uint64 `protobuf:"varint,1,opt,name=RankId,proto3" json:"RankId,omitempty"` RankId uint64 `protobuf:"varint,1,opt,name=RankId,proto3" json:"RankId,omitempty"`
@@ -294,7 +294,7 @@ func (m *UpsetRankData) GetRankDataList() []*RankData {
return nil return nil
} }
// DeleteByKey 更新排行榜数据 // DeleteByKey 删除排行榜数据
type DeleteByKey struct { type DeleteByKey struct {
RankId uint64 `protobuf:"varint,1,opt,name=RankId,proto3" json:"RankId,omitempty"` RankId uint64 `protobuf:"varint,1,opt,name=RankId,proto3" json:"RankId,omitempty"`
KeyList []uint64 `protobuf:"varint,2,rep,packed,name=KeyList,proto3" json:"KeyList,omitempty"` KeyList []uint64 `protobuf:"varint,2,rep,packed,name=KeyList,proto3" json:"KeyList,omitempty"`
@@ -454,27 +454,27 @@ func (m *FindRankDataByKey) GetKey() uint64 {
return 0 return 0
} }
// FindRankDataByPos 查找排行信息 // FindRankDataByRank 查找排行信息
type FindRankDataByPos struct { type FindRankDataByRank struct {
RankId uint64 `protobuf:"varint,1,opt,name=RankId,proto3" json:"RankId,omitempty"` RankId uint64 `protobuf:"varint,1,opt,name=RankId,proto3" json:"RankId,omitempty"`
Pos uint64 `protobuf:"varint,2,opt,name=Pos,proto3" json:"Pos,omitempty"` Rank uint64 `protobuf:"varint,2,opt,name=Rank,proto3" json:"Rank,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
} }
func (m *FindRankDataByPos) Reset() { *m = FindRankDataByPos{} } func (m *FindRankDataByRank) Reset() { *m = FindRankDataByRank{} }
func (m *FindRankDataByPos) String() string { return proto.CompactTextString(m) } func (m *FindRankDataByRank) String() string { return proto.CompactTextString(m) }
func (*FindRankDataByPos) ProtoMessage() {} func (*FindRankDataByRank) ProtoMessage() {}
func (*FindRankDataByPos) Descriptor() ([]byte, []int) { func (*FindRankDataByRank) Descriptor() ([]byte, []int) {
return fileDescriptor_d5b64eda47521620, []int{7} return fileDescriptor_d5b64eda47521620, []int{7}
} }
func (m *FindRankDataByPos) XXX_Unmarshal(b []byte) error { func (m *FindRankDataByRank) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b) return m.Unmarshal(b)
} }
func (m *FindRankDataByPos) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *FindRankDataByRank) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic { if deterministic {
return xxx_messageInfo_FindRankDataByPos.Marshal(b, m, deterministic) return xxx_messageInfo_FindRankDataByRank.Marshal(b, m, deterministic)
} else { } else {
b = b[:cap(b)] b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b) n, err := m.MarshalToSizedBuffer(b)
@@ -484,54 +484,54 @@ func (m *FindRankDataByPos) XXX_Marshal(b []byte, deterministic bool) ([]byte, e
return b[:n], nil return b[:n], nil
} }
} }
func (m *FindRankDataByPos) XXX_Merge(src proto.Message) { func (m *FindRankDataByRank) XXX_Merge(src proto.Message) {
xxx_messageInfo_FindRankDataByPos.Merge(m, src) xxx_messageInfo_FindRankDataByRank.Merge(m, src)
} }
func (m *FindRankDataByPos) XXX_Size() int { func (m *FindRankDataByRank) XXX_Size() int {
return m.Size() return m.Size()
} }
func (m *FindRankDataByPos) XXX_DiscardUnknown() { func (m *FindRankDataByRank) XXX_DiscardUnknown() {
xxx_messageInfo_FindRankDataByPos.DiscardUnknown(m) xxx_messageInfo_FindRankDataByRank.DiscardUnknown(m)
} }
var xxx_messageInfo_FindRankDataByPos proto.InternalMessageInfo var xxx_messageInfo_FindRankDataByRank proto.InternalMessageInfo
func (m *FindRankDataByPos) GetRankId() uint64 { func (m *FindRankDataByRank) GetRankId() uint64 {
if m != nil { if m != nil {
return m.RankId return m.RankId
} }
return 0 return 0
} }
func (m *FindRankDataByPos) GetPos() uint64 { func (m *FindRankDataByRank) GetRank() uint64 {
if m != nil { if m != nil {
return m.Pos return m.Rank
} }
return 0 return 0
} }
// FindRankDataListStartTo 查找排行信息,StartPos开始Count个 // FindRankDataList 查找排行信息
type FindRankDataListStartTo struct { type FindRankDataList struct {
RankId uint64 `protobuf:"varint,1,opt,name=RankId,proto3" json:"RankId,omitempty"` RankId uint64 `protobuf:"varint,1,opt,name=RankId,proto3" json:"RankId,omitempty"`
StartPos uint64 `protobuf:"varint,2,opt,name=StartPos,proto3" json:"StartPos,omitempty"` StartRank uint64 `protobuf:"varint,2,opt,name=StartRank,proto3" json:"StartRank,omitempty"`
Count uint64 `protobuf:"varint,3,opt,name=Count,proto3" json:"Count,omitempty"` Count uint64 `protobuf:"varint,3,opt,name=Count,proto3" json:"Count,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
} }
func (m *FindRankDataListStartTo) Reset() { *m = FindRankDataListStartTo{} } func (m *FindRankDataList) Reset() { *m = FindRankDataList{} }
func (m *FindRankDataListStartTo) String() string { return proto.CompactTextString(m) } func (m *FindRankDataList) String() string { return proto.CompactTextString(m) }
func (*FindRankDataListStartTo) ProtoMessage() {} func (*FindRankDataList) ProtoMessage() {}
func (*FindRankDataListStartTo) Descriptor() ([]byte, []int) { func (*FindRankDataList) Descriptor() ([]byte, []int) {
return fileDescriptor_d5b64eda47521620, []int{8} return fileDescriptor_d5b64eda47521620, []int{8}
} }
func (m *FindRankDataListStartTo) XXX_Unmarshal(b []byte) error { func (m *FindRankDataList) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b) return m.Unmarshal(b)
} }
func (m *FindRankDataListStartTo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { func (m *FindRankDataList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic { if deterministic {
return xxx_messageInfo_FindRankDataListStartTo.Marshal(b, m, deterministic) return xxx_messageInfo_FindRankDataList.Marshal(b, m, deterministic)
} else { } else {
b = b[:cap(b)] b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b) n, err := m.MarshalToSizedBuffer(b)
@@ -541,33 +541,33 @@ func (m *FindRankDataListStartTo) XXX_Marshal(b []byte, deterministic bool) ([]b
return b[:n], nil return b[:n], nil
} }
} }
func (m *FindRankDataListStartTo) XXX_Merge(src proto.Message) { func (m *FindRankDataList) XXX_Merge(src proto.Message) {
xxx_messageInfo_FindRankDataListStartTo.Merge(m, src) xxx_messageInfo_FindRankDataList.Merge(m, src)
} }
func (m *FindRankDataListStartTo) XXX_Size() int { func (m *FindRankDataList) XXX_Size() int {
return m.Size() return m.Size()
} }
func (m *FindRankDataListStartTo) XXX_DiscardUnknown() { func (m *FindRankDataList) XXX_DiscardUnknown() {
xxx_messageInfo_FindRankDataListStartTo.DiscardUnknown(m) xxx_messageInfo_FindRankDataList.DiscardUnknown(m)
} }
var xxx_messageInfo_FindRankDataListStartTo proto.InternalMessageInfo var xxx_messageInfo_FindRankDataList proto.InternalMessageInfo
func (m *FindRankDataListStartTo) GetRankId() uint64 { func (m *FindRankDataList) GetRankId() uint64 {
if m != nil { if m != nil {
return m.RankId return m.RankId
} }
return 0 return 0
} }
func (m *FindRankDataListStartTo) GetStartPos() uint64 { func (m *FindRankDataList) GetStartRank() uint64 {
if m != nil { if m != nil {
return m.StartPos return m.StartRank
} }
return 0 return 0
} }
func (m *FindRankDataListStartTo) GetCount() uint64 { func (m *FindRankDataList) GetCount() uint64 {
if m != nil { if m != nil {
return m.Count return m.Count
} }
@@ -633,8 +633,8 @@ func (m *RankDataList) GetRankPosDataList() []*RankPosData {
// RankResult // RankResult
type RankResult struct { type RankResult struct {
AddCount int32 `protobuf:"varint,1,opt,name=AddCount,proto3" json:"AddCount,omitempty"` AddCount int32 `protobuf:"varint,1,opt,name=AddCount,proto3" json:"AddCount,omitempty"`
RemoveCount int32 `protobuf:"varint,2,opt,name=RemoveCount,proto3" json:"RemoveCount,omitempty"` ModifyCount int32 `protobuf:"varint,2,opt,name=ModifyCount,proto3" json:"ModifyCount,omitempty"`
ModifyCount int32 `protobuf:"varint,3,opt,name=ModifyCount,proto3" json:"ModifyCount,omitempty"` RemoveCount int32 `protobuf:"varint,3,opt,name=RemoveCount,proto3" json:"RemoveCount,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
@@ -680,16 +680,16 @@ func (m *RankResult) GetAddCount() int32 {
return 0 return 0
} }
func (m *RankResult) GetRemoveCount() int32 { func (m *RankResult) GetModifyCount() int32 {
if m != nil { if m != nil {
return m.RemoveCount return m.ModifyCount
} }
return 0 return 0
} }
func (m *RankResult) GetModifyCount() int32 { func (m *RankResult) GetRemoveCount() int32 {
if m != nil { if m != nil {
return m.ModifyCount return m.RemoveCount
} }
return 0 return 0
} }
@@ -702,8 +702,8 @@ func init() {
proto.RegisterType((*DeleteByKey)(nil), "rpc.DeleteByKey") proto.RegisterType((*DeleteByKey)(nil), "rpc.DeleteByKey")
proto.RegisterType((*AddRankList)(nil), "rpc.AddRankList") proto.RegisterType((*AddRankList)(nil), "rpc.AddRankList")
proto.RegisterType((*FindRankDataByKey)(nil), "rpc.FindRankDataByKey") proto.RegisterType((*FindRankDataByKey)(nil), "rpc.FindRankDataByKey")
proto.RegisterType((*FindRankDataByPos)(nil), "rpc.FindRankDataByPos") proto.RegisterType((*FindRankDataByRank)(nil), "rpc.FindRankDataByRank")
proto.RegisterType((*FindRankDataListStartTo)(nil), "rpc.FindRankDataListStartTo") proto.RegisterType((*FindRankDataList)(nil), "rpc.FindRankDataList")
proto.RegisterType((*RankDataList)(nil), "rpc.RankDataList") proto.RegisterType((*RankDataList)(nil), "rpc.RankDataList")
proto.RegisterType((*RankResult)(nil), "rpc.RankResult") proto.RegisterType((*RankResult)(nil), "rpc.RankResult")
} }
@@ -711,37 +711,37 @@ func init() {
func init() { proto.RegisterFile("proto/rpcproto/rank.proto", fileDescriptor_d5b64eda47521620) } func init() { proto.RegisterFile("proto/rpcproto/rank.proto", fileDescriptor_d5b64eda47521620) }
var fileDescriptor_d5b64eda47521620 = []byte{ var fileDescriptor_d5b64eda47521620 = []byte{
// 468 bytes of a gzipped FileDescriptorProto // 470 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x54, 0xdf, 0x8b, 0xd3, 0x40, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x54, 0x51, 0x8b, 0xd3, 0x40,
0x10, 0x26, 0x4d, 0x72, 0x2d, 0x93, 0x2b, 0x9e, 0xab, 0x68, 0xf4, 0xa1, 0x84, 0x45, 0xb0, 0x4f, 0x10, 0x66, 0x9b, 0xe4, 0x5a, 0x27, 0x57, 0xac, 0xab, 0x48, 0x14, 0x29, 0x61, 0x11, 0xec, 0x53,
0x15, 0x15, 0x7c, 0x50, 0x44, 0x7a, 0x16, 0xe1, 0xb8, 0x2b, 0xc8, 0x54, 0x5f, 0xee, 0x2d, 0x66, 0x45, 0x05, 0x1f, 0x14, 0xd1, 0x9e, 0x55, 0x38, 0xae, 0x05, 0xd9, 0xe2, 0xcb, 0x3d, 0x08, 0x31,
0x57, 0x0c, 0xad, 0xcd, 0x92, 0xec, 0x1d, 0xed, 0x7f, 0xe8, 0xa3, 0x7f, 0x82, 0xf4, 0x2f, 0x91, 0xbb, 0x42, 0x68, 0x6d, 0x96, 0xcd, 0xde, 0x71, 0xfd, 0x1f, 0xfe, 0x28, 0x1f, 0xfd, 0x09, 0xd2,
0xd9, 0x64, 0xf3, 0xe3, 0x8e, 0xf4, 0x6d, 0xbe, 0x6f, 0xbe, 0xcc, 0x37, 0x3b, 0x33, 0x04, 0x9e, 0x5f, 0x22, 0xb3, 0xc9, 0xa6, 0xc9, 0x61, 0xfa, 0x36, 0xdf, 0x37, 0x5f, 0xe6, 0x9b, 0x9d, 0x19,
0xa9, 0x3c, 0xd3, 0xd9, 0xab, 0x5c, 0x25, 0x55, 0x10, 0x6f, 0xd7, 0x33, 0x13, 0x32, 0x37, 0x57, 0x02, 0x8f, 0x94, 0xce, 0x4d, 0xfe, 0x5c, 0xab, 0xb4, 0x0a, 0x92, 0xed, 0x7a, 0x6a, 0x43, 0xea,
0x09, 0xff, 0x05, 0x23, 0x8c, 0xb7, 0xeb, 0x45, 0xac, 0x63, 0x76, 0x06, 0xee, 0xa5, 0xdc, 0x87, 0x69, 0x95, 0xb2, 0x05, 0x0c, 0x78, 0xb2, 0x5d, 0xcf, 0x13, 0x93, 0xd0, 0x11, 0x78, 0x17, 0x72,
0x4e, 0xe4, 0x4c, 0x3d, 0xa4, 0x90, 0x3d, 0x87, 0xd1, 0x2a, 0xcb, 0x35, 0x65, 0xc3, 0x41, 0xe4, 0x17, 0x91, 0x98, 0x4c, 0x7c, 0x8e, 0x21, 0x7d, 0x0c, 0x83, 0x55, 0xae, 0x0d, 0x66, 0xa3, 0x5e,
0x4e, 0x5d, 0xac, 0x31, 0x63, 0xe0, 0x19, 0xde, 0x8d, 0x9c, 0xe9, 0x29, 0x9a, 0x98, 0xf4, 0x72, 0xec, 0x4d, 0x3c, 0x5e, 0x63, 0x4a, 0xc1, 0xb7, 0xbc, 0x17, 0x93, 0xc9, 0x29, 0xb7, 0x31, 0x4b,
0xa7, 0xd2, 0x5c, 0x2e, 0x8b, 0xd0, 0x8b, 0x1c, 0xd2, 0x5b, 0xcc, 0x53, 0x08, 0xc8, 0xe9, 0x6b, 0x21, 0xc4, 0x6a, 0x5f, 0xf2, 0xa2, 0xa3, 0x20, 0x05, 0x1f, 0x05, 0x51, 0xcf, 0x52, 0x36, 0x6e,
0x56, 0xf4, 0x98, 0x85, 0x30, 0xac, 0x04, 0xe1, 0xc0, 0xb0, 0x16, 0x76, 0xda, 0x70, 0x7b, 0xda, 0x99, 0x78, 0x1d, 0x26, 0x7e, 0xc3, 0xe4, 0x17, 0x29, 0x7b, 0x5e, 0x64, 0x85, 0xa1, 0x0f, 0xe1,
0xf0, 0x9a, 0x36, 0xf8, 0xae, 0x7c, 0xd4, 0x55, 0x5a, 0x68, 0xf6, 0x04, 0x4e, 0x28, 0xbe, 0x10, 0x04, 0xe3, 0x73, 0x51, 0xb9, 0x54, 0x88, 0x3e, 0x85, 0xe1, 0x6a, 0x9d, 0x29, 0xd4, 0x2c, 0xe4,
0x95, 0x55, 0x85, 0xd8, 0x0b, 0x18, 0xaf, 0xd6, 0xa9, 0x22, 0xcd, 0x95, 0xbc, 0x95, 0x1b, 0xe3, 0xb5, 0xdc, 0x58, 0xc7, 0x80, 0xb7, 0x49, 0xfa, 0x00, 0x82, 0xf3, 0x62, 0x2e, 0x53, 0xfb, 0x88,
0xe9, 0x63, 0x97, 0x64, 0x8f, 0xc1, 0xbf, 0x28, 0x16, 0x32, 0x31, 0xaf, 0x1c, 0x61, 0x09, 0xa8, 0x01, 0x2f, 0x01, 0x8d, 0xa0, 0xbf, 0x4c, 0x6e, 0x6c, 0x9f, 0xbe, 0x2d, 0xea, 0x20, 0xb6, 0xfa,
0xd3, 0x65, 0xbc, 0xa3, 0x42, 0xc6, 0xd6, 0x43, 0x0b, 0xf9, 0x35, 0x8c, 0xbf, 0xab, 0x42, 0xea, 0xe9, 0x46, 0x65, 0x5a, 0x2e, 0x8b, 0x28, 0x88, 0x09, 0xb6, 0xea, 0x30, 0xbb, 0x84, 0xe1, 0x57,
0x7a, 0xa6, 0x7d, 0xf6, 0xaf, 0xe1, 0xd4, 0x6a, 0xc8, 0xcd, 0x4c, 0x37, 0x78, 0x33, 0x9e, 0xe5, 0x55, 0x48, 0x53, 0x8f, 0xb3, 0xab, 0xb5, 0x17, 0x70, 0xea, 0x34, 0xd8, 0x89, 0x1d, 0x6c, 0xf8,
0x2a, 0x99, 0xd9, 0x04, 0x76, 0x24, 0xfc, 0x13, 0x04, 0x0b, 0xb9, 0x91, 0x5a, 0x9e, 0xef, 0x69, 0x72, 0x38, 0xd5, 0x2a, 0x9d, 0xba, 0x04, 0x6f, 0x49, 0xd8, 0x7b, 0x08, 0xe7, 0x72, 0x23, 0x8d,
0x5c, 0x7d, 0x95, 0x43, 0x18, 0x5e, 0xca, 0x7d, 0x5d, 0xd4, 0x43, 0x0b, 0xf9, 0x3b, 0x08, 0xe6, 0x3c, 0xdb, 0xe1, 0x14, 0xbb, 0x2a, 0x47, 0xd0, 0xbf, 0x90, 0xbb, 0xba, 0xa8, 0xcf, 0x1d, 0x64,
0x42, 0xd4, 0x93, 0x79, 0x09, 0xc3, 0xb9, 0x10, 0x46, 0xe8, 0xdc, 0x71, 0x27, 0x12, 0x6d, 0x96, 0xaf, 0x21, 0x9c, 0x09, 0x51, 0x4f, 0xed, 0x19, 0xf4, 0x67, 0x42, 0x58, 0x21, 0xb9, 0xe5, 0x8e,
0x7f, 0x84, 0x87, 0x5f, 0xd2, 0xad, 0xb0, 0xcd, 0x1c, 0xb7, 0xaf, 0xf6, 0x3a, 0xa8, 0xf7, 0x7a, 0x24, 0x77, 0x59, 0xf6, 0x0e, 0xee, 0x7d, 0xce, 0xb6, 0xc2, 0x35, 0x73, 0xdc, 0xbe, 0x5a, 0x77,
0xff, 0x73, 0x5a, 0xe9, 0x91, 0xcf, 0x9b, 0x03, 0xa0, 0x90, 0x27, 0xf0, 0xb4, 0xfd, 0x39, 0x75, 0xaf, 0x5e, 0x37, 0xfb, 0x00, 0xb4, 0xfd, 0xb9, 0x9d, 0x62, 0xd7, 0xf7, 0xff, 0x39, 0x0e, 0xf6,
0xb4, 0xd2, 0x71, 0xae, 0xbf, 0x65, 0xbd, 0x45, 0xe8, 0x5e, 0x48, 0xd2, 0x54, 0xaa, 0x31, 0x6d, 0x0d, 0x46, 0xcd, 0x0a, 0x47, 0x77, 0xfe, 0x04, 0xee, 0xac, 0x4c, 0xa2, 0x4d, 0xa3, 0xc8, 0x81,
0xf4, 0x73, 0x76, 0xb3, 0xd5, 0x66, 0xa3, 0x1e, 0x96, 0x80, 0xab, 0xee, 0x3a, 0xe8, 0x3a, 0x2c, 0xc0, 0x5d, 0x7f, 0xcc, 0xaf, 0xb6, 0xc6, 0xee, 0xda, 0xe7, 0x25, 0x60, 0xaa, 0xbd, 0x0c, 0xbc,
0x2e, 0xd5, 0xa5, 0x41, 0x97, 0x64, 0xef, 0xe1, 0x41, 0xeb, 0xa4, 0x5b, 0x7b, 0x3c, 0xab, 0x27, 0x1b, 0x87, 0x4b, 0x75, 0x69, 0xd1, 0x26, 0xe9, 0x1b, 0xb8, 0xdb, 0xb8, 0xf3, 0xc6, 0x16, 0x47,
0x59, 0xe5, 0xf0, 0xae, 0x90, 0x6f, 0x00, 0x88, 0x42, 0x59, 0xdc, 0x6c, 0x34, 0x75, 0x3c, 0x17, 0xf5, 0x1c, 0xab, 0x1c, 0xbf, 0x2d, 0x64, 0x1b, 0x00, 0xa4, 0xb8, 0x2c, 0xae, 0x36, 0x06, 0x2f,
0xa2, 0xb1, 0xf2, 0xb1, 0xc6, 0x2c, 0x82, 0x00, 0xe5, 0xef, 0xec, 0x56, 0x96, 0xe9, 0xf2, 0x4e, 0x6a, 0x26, 0xc4, 0xc1, 0x2a, 0xe0, 0x35, 0xa6, 0x31, 0x84, 0xcb, 0x5c, 0x64, 0x3f, 0x76, 0x65,
0xdb, 0x14, 0x29, 0x96, 0x99, 0x48, 0x7f, 0xee, 0x9b, 0x97, 0xf9, 0xd8, 0xa6, 0xce, 0x1f, 0xfd, 0xba, 0xbc, 0xe0, 0x26, 0x85, 0x0a, 0x2e, 0x7f, 0xe6, 0xd7, 0xf2, 0xf0, 0xb2, 0x80, 0x37, 0xa9,
0x39, 0x4c, 0x9c, 0xbf, 0x87, 0x89, 0xf3, 0xef, 0x30, 0x71, 0xae, 0xfd, 0xd9, 0x87, 0x5c, 0x25, 0xb3, 0xfb, 0xbf, 0xf7, 0x63, 0xf2, 0x67, 0x3f, 0x26, 0x7f, 0xf7, 0x63, 0x72, 0x19, 0x4c, 0xdf,
0x3f, 0x4e, 0xcc, 0x7f, 0xe0, 0xed, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x4b, 0x0e, 0xaf, 0x42, 0x6a, 0x95, 0x7e, 0x3f, 0xb1, 0x3f, 0x80, 0x57, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0xc9, 0xb1,
0x24, 0x04, 0x00, 0x00, 0x14, 0x9a, 0x1d, 0x04, 0x00, 0x00,
} }
func (m *RankData) Marshal() (dAtA []byte, err error) { func (m *RankData) Marshal() (dAtA []byte, err error) {
@@ -768,11 +768,6 @@ func (m *RankData) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i -= len(m.XXX_unrecognized) i -= len(m.XXX_unrecognized)
copy(dAtA[i:], m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized)
} }
if m.ExpireMs != 0 {
i = encodeVarintRank(dAtA, i, uint64(m.ExpireMs))
i--
dAtA[i] = 0x20
}
if len(m.Data) > 0 { if len(m.Data) > 0 {
i -= len(m.Data) i -= len(m.Data)
copy(dAtA[i:], m.Data) copy(dAtA[i:], m.Data)
@@ -857,8 +852,8 @@ func (m *RankPosData) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i-- i--
dAtA[i] = 0x1a dAtA[i] = 0x1a
} }
if m.RankPos != 0 { if m.Rank != 0 {
i = encodeVarintRank(dAtA, i, uint64(m.RankPos)) i = encodeVarintRank(dAtA, i, uint64(m.Rank))
i-- i--
dAtA[i] = 0x10 dAtA[i] = 0x10
} }
@@ -894,6 +889,11 @@ func (m *RankList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i -= len(m.XXX_unrecognized) i -= len(m.XXX_unrecognized)
copy(dAtA[i:], m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized)
} }
if m.ExpireMs != 0 {
i = encodeVarintRank(dAtA, i, uint64(m.ExpireMs))
i--
dAtA[i] = 0x28
}
if m.MaxRank != 0 { if m.MaxRank != 0 {
i = encodeVarintRank(dAtA, i, uint64(m.MaxRank)) i = encodeVarintRank(dAtA, i, uint64(m.MaxRank))
i-- i--
@@ -1096,7 +1096,7 @@ func (m *FindRankDataByKey) MarshalToSizedBuffer(dAtA []byte) (int, error) {
return len(dAtA) - i, nil return len(dAtA) - i, nil
} }
func (m *FindRankDataByPos) Marshal() (dAtA []byte, err error) { func (m *FindRankDataByRank) Marshal() (dAtA []byte, err error) {
size := m.Size() size := m.Size()
dAtA = make([]byte, size) dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size]) n, err := m.MarshalToSizedBuffer(dAtA[:size])
@@ -1106,12 +1106,12 @@ func (m *FindRankDataByPos) Marshal() (dAtA []byte, err error) {
return dAtA[:n], nil return dAtA[:n], nil
} }
func (m *FindRankDataByPos) MarshalTo(dAtA []byte) (int, error) { func (m *FindRankDataByRank) MarshalTo(dAtA []byte) (int, error) {
size := m.Size() size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size]) return m.MarshalToSizedBuffer(dAtA[:size])
} }
func (m *FindRankDataByPos) MarshalToSizedBuffer(dAtA []byte) (int, error) { func (m *FindRankDataByRank) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA) i := len(dAtA)
_ = i _ = i
var l int var l int
@@ -1120,8 +1120,8 @@ func (m *FindRankDataByPos) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i -= len(m.XXX_unrecognized) i -= len(m.XXX_unrecognized)
copy(dAtA[i:], m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized)
} }
if m.Pos != 0 { if m.Rank != 0 {
i = encodeVarintRank(dAtA, i, uint64(m.Pos)) i = encodeVarintRank(dAtA, i, uint64(m.Rank))
i-- i--
dAtA[i] = 0x10 dAtA[i] = 0x10
} }
@@ -1133,7 +1133,7 @@ func (m *FindRankDataByPos) MarshalToSizedBuffer(dAtA []byte) (int, error) {
return len(dAtA) - i, nil return len(dAtA) - i, nil
} }
func (m *FindRankDataListStartTo) Marshal() (dAtA []byte, err error) { func (m *FindRankDataList) Marshal() (dAtA []byte, err error) {
size := m.Size() size := m.Size()
dAtA = make([]byte, size) dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size]) n, err := m.MarshalToSizedBuffer(dAtA[:size])
@@ -1143,12 +1143,12 @@ func (m *FindRankDataListStartTo) Marshal() (dAtA []byte, err error) {
return dAtA[:n], nil return dAtA[:n], nil
} }
func (m *FindRankDataListStartTo) MarshalTo(dAtA []byte) (int, error) { func (m *FindRankDataList) MarshalTo(dAtA []byte) (int, error) {
size := m.Size() size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size]) return m.MarshalToSizedBuffer(dAtA[:size])
} }
func (m *FindRankDataListStartTo) MarshalToSizedBuffer(dAtA []byte) (int, error) { func (m *FindRankDataList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA) i := len(dAtA)
_ = i _ = i
var l int var l int
@@ -1162,8 +1162,8 @@ func (m *FindRankDataListStartTo) MarshalToSizedBuffer(dAtA []byte) (int, error)
i-- i--
dAtA[i] = 0x18 dAtA[i] = 0x18
} }
if m.StartPos != 0 { if m.StartRank != 0 {
i = encodeVarintRank(dAtA, i, uint64(m.StartPos)) i = encodeVarintRank(dAtA, i, uint64(m.StartRank))
i-- i--
dAtA[i] = 0x10 dAtA[i] = 0x10
} }
@@ -1245,13 +1245,13 @@ func (m *RankResult) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i -= len(m.XXX_unrecognized) i -= len(m.XXX_unrecognized)
copy(dAtA[i:], m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized)
} }
if m.ModifyCount != 0 { if m.RemoveCount != 0 {
i = encodeVarintRank(dAtA, i, uint64(m.ModifyCount)) i = encodeVarintRank(dAtA, i, uint64(m.RemoveCount))
i-- i--
dAtA[i] = 0x18 dAtA[i] = 0x18
} }
if m.RemoveCount != 0 { if m.ModifyCount != 0 {
i = encodeVarintRank(dAtA, i, uint64(m.RemoveCount)) i = encodeVarintRank(dAtA, i, uint64(m.ModifyCount))
i-- i--
dAtA[i] = 0x10 dAtA[i] = 0x10
} }
@@ -1294,9 +1294,6 @@ func (m *RankData) Size() (n int) {
if l > 0 { if l > 0 {
n += 1 + l + sovRank(uint64(l)) n += 1 + l + sovRank(uint64(l))
} }
if m.ExpireMs != 0 {
n += 1 + sovRank(uint64(m.ExpireMs))
}
if m.XXX_unrecognized != nil { if m.XXX_unrecognized != nil {
n += len(m.XXX_unrecognized) n += len(m.XXX_unrecognized)
} }
@@ -1312,8 +1309,8 @@ func (m *RankPosData) Size() (n int) {
if m.Key != 0 { if m.Key != 0 {
n += 1 + sovRank(uint64(m.Key)) n += 1 + sovRank(uint64(m.Key))
} }
if m.RankPos != 0 { if m.Rank != 0 {
n += 1 + sovRank(uint64(m.RankPos)) n += 1 + sovRank(uint64(m.Rank))
} }
if len(m.SortData) > 0 { if len(m.SortData) > 0 {
l = 0 l = 0
@@ -1350,6 +1347,9 @@ func (m *RankList) Size() (n int) {
if m.MaxRank != 0 { if m.MaxRank != 0 {
n += 1 + sovRank(uint64(m.MaxRank)) n += 1 + sovRank(uint64(m.MaxRank))
} }
if m.ExpireMs != 0 {
n += 1 + sovRank(uint64(m.ExpireMs))
}
if m.XXX_unrecognized != nil { if m.XXX_unrecognized != nil {
n += len(m.XXX_unrecognized) n += len(m.XXX_unrecognized)
} }
@@ -1435,7 +1435,7 @@ func (m *FindRankDataByKey) Size() (n int) {
return n return n
} }
func (m *FindRankDataByPos) Size() (n int) { func (m *FindRankDataByRank) Size() (n int) {
if m == nil { if m == nil {
return 0 return 0
} }
@@ -1444,8 +1444,8 @@ func (m *FindRankDataByPos) Size() (n int) {
if m.RankId != 0 { if m.RankId != 0 {
n += 1 + sovRank(uint64(m.RankId)) n += 1 + sovRank(uint64(m.RankId))
} }
if m.Pos != 0 { if m.Rank != 0 {
n += 1 + sovRank(uint64(m.Pos)) n += 1 + sovRank(uint64(m.Rank))
} }
if m.XXX_unrecognized != nil { if m.XXX_unrecognized != nil {
n += len(m.XXX_unrecognized) n += len(m.XXX_unrecognized)
@@ -1453,7 +1453,7 @@ func (m *FindRankDataByPos) Size() (n int) {
return n return n
} }
func (m *FindRankDataListStartTo) Size() (n int) { func (m *FindRankDataList) Size() (n int) {
if m == nil { if m == nil {
return 0 return 0
} }
@@ -1462,8 +1462,8 @@ func (m *FindRankDataListStartTo) Size() (n int) {
if m.RankId != 0 { if m.RankId != 0 {
n += 1 + sovRank(uint64(m.RankId)) n += 1 + sovRank(uint64(m.RankId))
} }
if m.StartPos != 0 { if m.StartRank != 0 {
n += 1 + sovRank(uint64(m.StartPos)) n += 1 + sovRank(uint64(m.StartRank))
} }
if m.Count != 0 { if m.Count != 0 {
n += 1 + sovRank(uint64(m.Count)) n += 1 + sovRank(uint64(m.Count))
@@ -1504,12 +1504,12 @@ func (m *RankResult) Size() (n int) {
if m.AddCount != 0 { if m.AddCount != 0 {
n += 1 + sovRank(uint64(m.AddCount)) n += 1 + sovRank(uint64(m.AddCount))
} }
if m.RemoveCount != 0 {
n += 1 + sovRank(uint64(m.RemoveCount))
}
if m.ModifyCount != 0 { if m.ModifyCount != 0 {
n += 1 + sovRank(uint64(m.ModifyCount)) n += 1 + sovRank(uint64(m.ModifyCount))
} }
if m.RemoveCount != 0 {
n += 1 + sovRank(uint64(m.RemoveCount))
}
if m.XXX_unrecognized != nil { if m.XXX_unrecognized != nil {
n += len(m.XXX_unrecognized) n += len(m.XXX_unrecognized)
} }
@@ -1680,25 +1680,6 @@ func (m *RankData) Unmarshal(dAtA []byte) error {
m.Data = []byte{} m.Data = []byte{}
} }
iNdEx = postIndex iNdEx = postIndex
case 4:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field ExpireMs", wireType)
}
m.ExpireMs = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowRank
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
m.ExpireMs |= int64(b&0x7F) << shift
if b < 0x80 {
break
}
}
default: default:
iNdEx = preIndex iNdEx = preIndex
skippy, err := skipRank(dAtA[iNdEx:]) skippy, err := skipRank(dAtA[iNdEx:])
@@ -1774,9 +1755,9 @@ func (m *RankPosData) Unmarshal(dAtA []byte) error {
} }
case 2: case 2:
if wireType != 0 { if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field RankPos", wireType) return fmt.Errorf("proto: wrong wireType = %d for field Rank", wireType)
} }
m.RankPos = 0 m.Rank = 0
for shift := uint(0); ; shift += 7 { for shift := uint(0); ; shift += 7 {
if shift >= 64 { if shift >= 64 {
return ErrIntOverflowRank return ErrIntOverflowRank
@@ -1786,7 +1767,7 @@ func (m *RankPosData) Unmarshal(dAtA []byte) error {
} }
b := dAtA[iNdEx] b := dAtA[iNdEx]
iNdEx++ iNdEx++
m.RankPos |= uint64(b&0x7F) << shift m.Rank |= uint64(b&0x7F) << shift
if b < 0x80 { if b < 0x80 {
break break
} }
@@ -2032,6 +2013,25 @@ func (m *RankList) Unmarshal(dAtA []byte) error {
break break
} }
} }
case 5:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field ExpireMs", wireType)
}
m.ExpireMs = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowRank
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
m.ExpireMs |= int64(b&0x7F) << shift
if b < 0x80 {
break
}
}
default: default:
iNdEx = preIndex iNdEx = preIndex
skippy, err := skipRank(dAtA[iNdEx:]) skippy, err := skipRank(dAtA[iNdEx:])
@@ -2493,7 +2493,7 @@ func (m *FindRankDataByKey) Unmarshal(dAtA []byte) error {
} }
return nil return nil
} }
func (m *FindRankDataByPos) Unmarshal(dAtA []byte) error { func (m *FindRankDataByRank) Unmarshal(dAtA []byte) error {
l := len(dAtA) l := len(dAtA)
iNdEx := 0 iNdEx := 0
for iNdEx < l { for iNdEx < l {
@@ -2516,10 +2516,10 @@ func (m *FindRankDataByPos) Unmarshal(dAtA []byte) error {
fieldNum := int32(wire >> 3) fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7) wireType := int(wire & 0x7)
if wireType == 4 { if wireType == 4 {
return fmt.Errorf("proto: FindRankDataByPos: wiretype end group for non-group") return fmt.Errorf("proto: FindRankDataByRank: wiretype end group for non-group")
} }
if fieldNum <= 0 { if fieldNum <= 0 {
return fmt.Errorf("proto: FindRankDataByPos: illegal tag %d (wire type %d)", fieldNum, wire) return fmt.Errorf("proto: FindRankDataByRank: illegal tag %d (wire type %d)", fieldNum, wire)
} }
switch fieldNum { switch fieldNum {
case 1: case 1:
@@ -2543,9 +2543,9 @@ func (m *FindRankDataByPos) Unmarshal(dAtA []byte) error {
} }
case 2: case 2:
if wireType != 0 { if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field Pos", wireType) return fmt.Errorf("proto: wrong wireType = %d for field Rank", wireType)
} }
m.Pos = 0 m.Rank = 0
for shift := uint(0); ; shift += 7 { for shift := uint(0); ; shift += 7 {
if shift >= 64 { if shift >= 64 {
return ErrIntOverflowRank return ErrIntOverflowRank
@@ -2555,7 +2555,7 @@ func (m *FindRankDataByPos) Unmarshal(dAtA []byte) error {
} }
b := dAtA[iNdEx] b := dAtA[iNdEx]
iNdEx++ iNdEx++
m.Pos |= uint64(b&0x7F) << shift m.Rank |= uint64(b&0x7F) << shift
if b < 0x80 { if b < 0x80 {
break break
} }
@@ -2585,7 +2585,7 @@ func (m *FindRankDataByPos) Unmarshal(dAtA []byte) error {
} }
return nil return nil
} }
func (m *FindRankDataListStartTo) Unmarshal(dAtA []byte) error { func (m *FindRankDataList) Unmarshal(dAtA []byte) error {
l := len(dAtA) l := len(dAtA)
iNdEx := 0 iNdEx := 0
for iNdEx < l { for iNdEx < l {
@@ -2608,10 +2608,10 @@ func (m *FindRankDataListStartTo) Unmarshal(dAtA []byte) error {
fieldNum := int32(wire >> 3) fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7) wireType := int(wire & 0x7)
if wireType == 4 { if wireType == 4 {
return fmt.Errorf("proto: FindRankDataListStartTo: wiretype end group for non-group") return fmt.Errorf("proto: FindRankDataList: wiretype end group for non-group")
} }
if fieldNum <= 0 { if fieldNum <= 0 {
return fmt.Errorf("proto: FindRankDataListStartTo: illegal tag %d (wire type %d)", fieldNum, wire) return fmt.Errorf("proto: FindRankDataList: illegal tag %d (wire type %d)", fieldNum, wire)
} }
switch fieldNum { switch fieldNum {
case 1: case 1:
@@ -2635,9 +2635,9 @@ func (m *FindRankDataListStartTo) Unmarshal(dAtA []byte) error {
} }
case 2: case 2:
if wireType != 0 { if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field StartPos", wireType) return fmt.Errorf("proto: wrong wireType = %d for field StartRank", wireType)
} }
m.StartPos = 0 m.StartRank = 0
for shift := uint(0); ; shift += 7 { for shift := uint(0); ; shift += 7 {
if shift >= 64 { if shift >= 64 {
return ErrIntOverflowRank return ErrIntOverflowRank
@@ -2647,7 +2647,7 @@ func (m *FindRankDataListStartTo) Unmarshal(dAtA []byte) error {
} }
b := dAtA[iNdEx] b := dAtA[iNdEx]
iNdEx++ iNdEx++
m.StartPos |= uint64(b&0x7F) << shift m.StartRank |= uint64(b&0x7F) << shift
if b < 0x80 { if b < 0x80 {
break break
} }
@@ -2852,25 +2852,6 @@ func (m *RankResult) Unmarshal(dAtA []byte) error {
} }
} }
case 2: case 2:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field RemoveCount", wireType)
}
m.RemoveCount = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowRank
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
m.RemoveCount |= int32(b&0x7F) << shift
if b < 0x80 {
break
}
}
case 3:
if wireType != 0 { if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field ModifyCount", wireType) return fmt.Errorf("proto: wrong wireType = %d for field ModifyCount", wireType)
} }
@@ -2889,6 +2870,25 @@ func (m *RankResult) Unmarshal(dAtA []byte) error {
break break
} }
} }
case 3:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field RemoveCount", wireType)
}
m.RemoveCount = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowRank
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
m.RemoveCount |= int32(b&0x7F) << shift
if b < 0x80 {
break
}
}
default: default:
iNdEx = preIndex iNdEx = preIndex
skippy, err := skipRank(dAtA[iNdEx:]) skippy, err := skipRank(dAtA[iNdEx:])

76
rpc/rank.proto Normal file
View File

@@ -0,0 +1,76 @@
syntax = "proto3";
package rpc;
option go_package = ".;rpc";
// RankData 排行数据
message RankData {
uint64 Key = 1; //数据主建
repeated int64 SortData = 2; //参与排行的数据
bytes Data = 3; //不参与排行的数据
}
// RankPosData 排行数据——查询返回
message RankPosData {
uint64 Key = 1; //数据主建
uint64 Rank = 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; //最大排名
int64 ExpireMs = 5;//有效时间毫秒,0表示永不过期
}
// 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
}
// FindRankDataByRank 查找排行信息
message FindRankDataByRank {
uint64 RankId = 1; //排行榜的ID
uint64 Rank = 2; //排行名次
}
// FindRankDataList 查找排行信息
message FindRankDataList {
uint64 RankId = 1; //排行榜的ID
uint64 StartRank = 2; //排行的位置 0开始
uint64 Count = 3; //查询格式
}
// RankDataList
message RankDataList {
uint64 RankDataCount = 1; //排行长度
repeated RankPosData RankPosDataList = 2; //排行数据
}
// RankResult
message RankResult {
int32 AddCount = 1;//新增数量
int32 ModifyCount = 2; //修改数量
int32 RemoveCount = 3;//删除数量
}

View File

@@ -15,7 +15,7 @@ var RankDataPool = sync.NewPoolEx(make(chan sync.IPoolData, 10240), func() sync.
type RankData struct { type RankData struct {
*rpc.RankData *rpc.RankData
bRelease bool
ref bool ref bool
compareFunc func(other skip.Comparator) int compareFunc func(other skip.Comparator) int
} }

View File

@@ -0,0 +1,127 @@
package rankservice
import (
"container/heap"
"github.com/duanhf2012/origin/util/sync"
"time"
)
var expireDataPool = sync.NewPoolEx(make(chan sync.IPoolData, 10240), func() sync.IPoolData {
return &ExpireData{}
})
type ExpireData struct {
Index int
Key uint64
RefreshTimestamp int64
ref bool
}
type rankDataHeap struct {
rankDatas []*ExpireData
expireMs int64
mapExpireData map[uint64]*ExpireData
}
var expireData ExpireData
func (ed *ExpireData) Reset(){
*ed = expireData
}
func (ed *ExpireData) IsRef() bool{
return ed.ref
}
func (ed *ExpireData) Ref(){
ed.ref = true
}
func (ed *ExpireData) UnRef(){
ed.ref = false
}
func (rd *rankDataHeap) Init(maxRankDataCount int32,expireMs time.Duration){
rd.rankDatas = make([]*ExpireData,0,maxRankDataCount)
rd.expireMs = int64(expireMs)
rd.mapExpireData = make(map[uint64]*ExpireData,512)
heap.Init(rd)
}
func (rd *rankDataHeap) Len() int {
return len(rd.rankDatas)
}
func (rd *rankDataHeap) Less(i, j int) bool {
return rd.rankDatas[i].RefreshTimestamp < rd.rankDatas[j].RefreshTimestamp
}
func (rd *rankDataHeap) Swap(i, j int) {
rd.rankDatas[i], rd.rankDatas[j] = rd.rankDatas[j], rd.rankDatas[i]
rd.rankDatas[i].Index,rd.rankDatas[j].Index = i,j
}
func (rd *rankDataHeap) Push(x interface{}) {
ed := x.(*ExpireData)
ed.Index = len(rd.rankDatas)
rd.rankDatas = append(rd.rankDatas,ed)
}
func (rd *rankDataHeap) Pop() (ret interface{}) {
l := len(rd.rankDatas)
var retData *ExpireData
rd.rankDatas, retData = rd.rankDatas[:l-1], rd.rankDatas[l-1]
retData.Index = -1
ret = retData
return
}
func (rd *rankDataHeap) PopExpireKey() uint64{
if rd.Len() <= 0 {
return 0
}
if rd.rankDatas[0].RefreshTimestamp+rd.expireMs > time.Now().UnixNano() {
return 0
}
rankData := heap.Pop(rd).(*ExpireData)
delete(rd.mapExpireData,rankData.Key)
return rankData.Key
}
func (rd *rankDataHeap) PushOrRefreshExpireKey(key uint64){
//1.先删掉之前的
expData ,ok := rd.mapExpireData[key]
if ok == true {
expData.RefreshTimestamp = time.Now().UnixNano()
heap.Fix(rd,expData.Index)
return
}
//2.直接插入
expData = expireDataPool.Get().(*ExpireData)
expData.Key = key
expData.RefreshTimestamp = time.Now().UnixNano()
rd.mapExpireData[key] = expData
heap.Push(rd,expData)
}
func (rd *rankDataHeap) RemoveExpireKey(key uint64){
expData ,ok := rd.mapExpireData[key]
if ok == false {
return
}
delete(rd.mapExpireData,key)
heap.Remove(rd,expData.Index)
expireDataPool.Put(expData)
}

View File

@@ -4,23 +4,13 @@ import "github.com/duanhf2012/origin/service"
type RankDataChangeType int8 type RankDataChangeType int8
const (
RankDataNone RankDataChangeType = 0
RankDataAdd RankDataChangeType = 1 //数据插入
RankDataUpdate RankDataChangeType = 2 //数据更新
RankDataDelete RankDataChangeType = 3 //数据删除
)
type IRankSkip interface { type IRankSkip interface {
GetRankID() uint64 GetRankID() uint64
GetRankLen() uint64 GetRankLen() uint64
} }
// RankDataChangeCallBack 排行数据变化时调用
//type RankDataChangeCallBack interface {
// CB(iRankService service.IService, rankSkip IRankSkip, changeType RankDataChangeType, changed []*RankData)
//}
type IRankModule interface { type IRankModule interface {
service.IModule service.IModule

View File

@@ -3,22 +3,12 @@ package rankservice
import ( import (
"fmt" "fmt"
"github.com/duanhf2012/origin/log" "github.com/duanhf2012/origin/log"
"github.com/duanhf2012/origin/node"
"github.com/duanhf2012/origin/rpc" "github.com/duanhf2012/origin/rpc"
"github.com/duanhf2012/origin/service" "github.com/duanhf2012/origin/service"
"time"
) )
func init() {
node.Setup(&RankService{})
}
const PreMapRankSkipLen = 10 const PreMapRankSkipLen = 10
const ManualAddRankSkip = "RPC_ManualAddRankSkip"
const UpsetRank = "RPC_UpsetRank"
const DeleteRankDataByKey = "RPC_DeleteRankDataByKey"
const FindRankDataByKey = "RPC_FindRankDataByKey"
const FindRankDataByPos = "RPC_FindRankDataByPos"
const FindRankDataListStartTo = "RPC_FindRankDataListStartTo"
type RankService struct { type RankService struct {
service.Service service.Service
@@ -68,7 +58,7 @@ func (rs *RankService) RPC_ManualAddRankSkip(addInfo *rpc.AddRankList, addResult
return fmt.Errorf("RPC_AddRankSkip must has rank id") return fmt.Errorf("RPC_AddRankSkip must has rank id")
} }
newSkip := NewRankSkip(addRankListData.IsDec, transformLevel(addRankListData.SkipListLevel), addRankListData.MaxRank) newSkip := NewRankSkip(addRankListData.IsDec, transformLevel(addRankListData.SkipListLevel), addRankListData.MaxRank,time.Duration(addRankListData.ExpireMs)*time.Millisecond)
rs.mapRankSkip[addRankListData.RankId] = newSkip rs.mapRankSkip[addRankListData.RankId] = newSkip
addList = append(addList, addRankListData.RankId) addList = append(addList, addRankListData.RankId)
} }
@@ -91,7 +81,7 @@ func (rs *RankService) RPC_UpsetRank(upsetInfo *rpc.UpsetRankData, upsetResult *
return nil return nil
} }
// RPC_DeleteRankDataByKey 按排行的key进行删除 // RPC_DeleteRankDataByKey 按key从排行榜中进行删除
func (rs *RankService) RPC_DeleteRankDataByKey(delInfo *rpc.DeleteByKey, delResult *rpc.RankResult) error { func (rs *RankService) RPC_DeleteRankDataByKey(delInfo *rpc.DeleteByKey, delResult *rpc.RankResult) error {
rankSkip, ok := rs.mapRankSkip[delInfo.RankId] rankSkip, ok := rs.mapRankSkip[delInfo.RankId]
if ok == false || rankSkip == nil { if ok == false || rankSkip == nil {
@@ -107,49 +97,49 @@ func (rs *RankService) RPC_DeleteRankDataByKey(delInfo *rpc.DeleteByKey, delResu
return nil return nil
} }
// RPC_FindRankDataByKey 按key查找 // RPC_FindRankDataByKey 按key查找,返回对应的排行名次信息
func (rs *RankService) RPC_FindRankDataByKey(findInfo *rpc.FindRankDataByKey, findResult *rpc.RankPosData) error { func (rs *RankService) RPC_FindRankDataByKey(findInfo *rpc.FindRankDataByKey, findResult *rpc.RankPosData) error {
rankObj, ok := rs.mapRankSkip[findInfo.RankId] rankObj, ok := rs.mapRankSkip[findInfo.RankId]
if ok == false || rankObj == nil { if ok == false || rankObj == nil {
return fmt.Errorf("RPC_FindRankDataByKey[", findInfo.RankId, "] no this rank type") return fmt.Errorf("RPC_FindRankDataByKey[", findInfo.RankId, "] no this rank type")
} }
findRankData, rankPos := rankObj.GetRankNodeData(findInfo.Key) findRankData, rank := rankObj.GetRankNodeData(findInfo.Key)
if findRankData != nil { if findRankData != nil {
findResult.Data = findRankData.Data findResult.Data = findRankData.Data
findResult.Key = findRankData.Key findResult.Key = findRankData.Key
findResult.SortData = findRankData.SortData findResult.SortData = findRankData.SortData
findResult.RankPos = rankPos findResult.Rank = rank
} }
return nil return nil
} }
// RPC_FindRankDataByPos 按pos查找 // RPC_FindRankDataByRank 按pos查找
func (rs *RankService) RPC_FindRankDataByPos(findInfo *rpc.FindRankDataByPos, findResult *rpc.RankPosData) error { func (rs *RankService) RPC_FindRankDataByRank(findInfo *rpc.FindRankDataByRank, findResult *rpc.RankPosData) error {
rankObj, ok := rs.mapRankSkip[findInfo.RankId] rankObj, ok := rs.mapRankSkip[findInfo.RankId]
if ok == false || rankObj == nil { if ok == false || rankObj == nil {
return fmt.Errorf("RPC_FindRankDataByKey[", findInfo.RankId, "] no this rank type") return fmt.Errorf("RPC_FindRankDataByKey[", findInfo.RankId, "] no this rank type")
} }
findRankData, rankPos := rankObj.GetRankNodeDataByPos(findInfo.Pos) findRankData, rankPos := rankObj.GetRankNodeDataByRank(findInfo.Rank)
if findRankData != nil { if findRankData != nil {
findResult.Data = findRankData.Data findResult.Data = findRankData.Data
findResult.Key = findRankData.Key findResult.Key = findRankData.Key
findResult.SortData = findRankData.SortData findResult.SortData = findRankData.SortData
findResult.RankPos = rankPos findResult.Rank = rankPos
} }
return nil return nil
} }
// RPC_FindRankDataListStartTo 按pos查找,start开始count个排行数据 // RPC_FindRankDataListStartRank查找,从StartRank开始count个排行数据
func (rs *RankService) RPC_FindRankDataListStartTo(findInfo *rpc.FindRankDataListStartTo, findResult *rpc.RankDataList) error { func (rs *RankService) RPC_FindRankDataList(findInfo *rpc.FindRankDataList, findResult *rpc.RankDataList) error {
rankObj, ok := rs.mapRankSkip[findInfo.RankId] rankObj, ok := rs.mapRankSkip[findInfo.RankId]
if ok == false || rankObj == nil { if ok == false || rankObj == nil {
return fmt.Errorf("RPC_FindRankDataListStartTo[", findInfo.RankId, "] no this rank type") return fmt.Errorf("RPC_FindRankDataListStartTo[", findInfo.RankId, "] no this rank type")
} }
findResult.RankDataCount = rankObj.GetRankLen() findResult.RankDataCount = rankObj.GetRankLen()
return rankObj.GetRankDataFromToLimit(findInfo.StartPos, findInfo.Count, findResult) return rankObj.GetRankDataFromToLimit(findInfo.StartRank, findInfo.Count, findResult)
} }
func (rs *RankService) deleteRankList(delIdList []uint64) { func (rs *RankService) deleteRankList(delIdList []uint64) {
@@ -187,9 +177,14 @@ func (rs *RankService) dealCfg() error {
level, _ := mapCfg["SkipListLevel"].(float64) level, _ := mapCfg["SkipListLevel"].(float64)
isDec, _ := mapCfg["IsDec"].(bool) isDec, _ := mapCfg["IsDec"].(bool)
maxRank, _ := mapCfg["MaxRank"].(float64) maxRank, _ := mapCfg["MaxRank"].(float64)
expireMs, _ := mapCfg["ExpireMs"].(float64)
newSkip := NewRankSkip(isDec, transformLevel(int32(level)), uint64(maxRank)) newSkip := NewRankSkip(isDec, transformLevel(int32(level)), uint64(maxRank),time.Duration(expireMs)*time.Millisecond)
rs.mapRankSkip[uint64(rankId)] = newSkip rs.mapRankSkip[uint64(rankId)] = newSkip
} }
return nil return nil
} }

View File

@@ -4,6 +4,7 @@ import (
"fmt" "fmt"
"github.com/duanhf2012/origin/rpc" "github.com/duanhf2012/origin/rpc"
"github.com/duanhf2012/origin/util/algorithms/skip" "github.com/duanhf2012/origin/util/algorithms/skip"
"time"
) )
type RankSkip struct { type RankSkip struct {
@@ -12,19 +13,46 @@ type RankSkip struct {
skipList *skip.SkipList //跳表 skipList *skip.SkipList //跳表
mapRankData map[uint64]*RankData //排行数据map mapRankData map[uint64]*RankData //排行数据map
maxLen uint64 //排行数据长度 maxLen uint64 //排行数据长度
expireMs time.Duration //有效时间
rankModule IRankModule rankModule IRankModule
rankDataExpire rankDataHeap
} }
const MaxPickExpireNum = 2
const (
RankDataNone RankDataChangeType = 0
RankDataAdd RankDataChangeType = 1 //数据插入
RankDataUpdate RankDataChangeType = 2 //数据更新
RankDataDelete RankDataChangeType = 3 //数据删除
)
// NewRankSkip 创建排行榜 // NewRankSkip 创建排行榜
func NewRankSkip(isDes bool, level interface{}, maxLen uint64) *RankSkip { func NewRankSkip(isDes bool, level interface{}, maxLen uint64,expireMs time.Duration) *RankSkip {
ret := &RankSkip{} rs := &RankSkip{}
ret.isDes = isDes rs.isDes = isDes
ret.skipList = skip.New(level) rs.skipList = skip.New(level)
ret.mapRankData = make(map[uint64]*RankData, 10240) rs.mapRankData = make(map[uint64]*RankData, 10240)
ret.maxLen = maxLen rs.maxLen = maxLen
rs.expireMs = expireMs
rs.rankDataExpire.Init(int32(maxLen),expireMs)
return ret return rs
}
func (rs *RankSkip) pickExpireKey(){
if rs.expireMs == 0 {
return
}
for i:=1;i<MaxPickExpireNum;i++{
key := rs.rankDataExpire.PopExpireKey()
if key == 0 {
return
}
rs.DeleteRankData([]uint64{key})
}
} }
func (rs *RankSkip) SetupRankModule(rankModule IRankModule) { func (rs *RankSkip) SetupRankModule(rankModule IRankModule) {
@@ -68,6 +96,8 @@ func (rs *RankSkip) UpsetRank(upsetRankData []*rpc.RankData) (addCount int32, mo
addCount = int32(len(addList)) addCount = int32(len(addList))
modifyCount = int32(len(updateList)) modifyCount = int32(len(updateList))
rs.pickExpireKey()
return return
} }
@@ -90,13 +120,18 @@ func (rs *RankSkip) upsetRank(upsetData *rpc.RankData) (*RankData, RankDataChang
newRankData := NewRankData(rs.isDes, upsetData) newRankData := NewRankData(rs.isDes, upsetData)
rs.skipList.Insert(newRankData) rs.skipList.Insert(newRankData)
rs.mapRankData[upsetData.Key] = newRankData rs.mapRankData[upsetData.Key] = newRankData
//刷新有效期
rs.rankDataExpire.PushOrRefreshExpireKey(upsetData.Key)
return newRankData, RankDataUpdate return newRankData, RankDataUpdate
} }
if rs.checkCanInsert(upsetData) { if rs.checkInsertAndReplace(upsetData) {
newRankData := NewRankData(rs.isDes, upsetData) newRankData := NewRankData(rs.isDes, upsetData)
rs.skipList.Insert(newRankData) rs.skipList.Insert(newRankData)
rs.mapRankData[upsetData.Key] = newRankData rs.mapRankData[upsetData.Key] = newRankData
rs.rankDataExpire.PushOrRefreshExpireKey(upsetData.Key)
return newRankData, RankDataAdd return newRankData, RankDataAdd
} }
@@ -120,10 +155,12 @@ func (rs *RankSkip) DeleteRankData(delKeys []uint64) int32 {
//从排行榜中删除 //从排行榜中删除
for _, rankData := range removeRankData { for _, rankData := range removeRankData {
rs.skipList.Delete(rankData) rs.skipList.Delete(rankData)
ReleaseRankData(rankData)
delete(rs.mapRankData, rankData.Key) delete(rs.mapRankData, rankData.Key)
rs.rankDataExpire.RemoveExpireKey(rankData.Key)
ReleaseRankData(rankData)
} }
rs.pickExpireKey()
return int32(len(removeRankData)) return int32(len(removeRankData))
} }
@@ -139,13 +176,13 @@ func (rs *RankSkip) GetRankNodeData(findKey uint64) (*RankData, uint64) {
} }
// GetRankNodeDataByPos 获取,返回排名节点与名次 // GetRankNodeDataByPos 获取,返回排名节点与名次
func (rs *RankSkip) GetRankNodeDataByPos(pos uint64) (*RankData, uint64) { func (rs *RankSkip) GetRankNodeDataByRank(rank uint64) (*RankData, uint64) {
rankNode := rs.skipList.ByPosition(pos) rankNode := rs.skipList.ByPosition(rank)
if rankNode == nil { if rankNode == nil {
return nil, 0 return nil, 0
} }
return rankNode.(*RankData), pos return rankNode.(*RankData), rank
} }
// GetRankKeyPrevToLimit 获取key前count名的数据 // GetRankKeyPrevToLimit 获取key前count名的数据
@@ -166,7 +203,7 @@ func (rs *RankSkip) GetRankKeyPrevToLimit(findKey, count uint64, result *rpc.Ran
rankData := iter.Value().(*RankData) rankData := iter.Value().(*RankData)
result.RankPosDataList = append(result.RankPosDataList, &rpc.RankPosData{ result.RankPosDataList = append(result.RankPosDataList, &rpc.RankPosData{
Key: rankData.Key, Key: rankData.Key,
RankPos: rankPos - iterCount, Rank: rankPos - iterCount,
SortData: rankData.SortData, SortData: rankData.SortData,
Data: rankData.Data, Data: rankData.Data,
}) })
@@ -194,7 +231,7 @@ func (rs *RankSkip) GetRankKeyNextToLimit(findKey, count uint64, result *rpc.Ran
rankData := iter.Value().(*RankData) rankData := iter.Value().(*RankData)
result.RankPosDataList = append(result.RankPosDataList, &rpc.RankPosData{ result.RankPosDataList = append(result.RankPosDataList, &rpc.RankPosData{
Key: rankData.Key, Key: rankData.Key,
RankPos: rankPos + iterCount, Rank: rankPos + iterCount,
SortData: rankData.SortData, SortData: rankData.SortData,
Data: rankData.Data, Data: rankData.Data,
}) })
@@ -220,7 +257,7 @@ func (rs *RankSkip) GetRankDataFromToLimit(startPos, count uint64, result *rpc.R
rankData := iter.Value().(*RankData) rankData := iter.Value().(*RankData)
result.RankPosDataList = append(result.RankPosDataList, &rpc.RankPosData{ result.RankPosDataList = append(result.RankPosDataList, &rpc.RankPosData{
Key: rankData.Key, Key: rankData.Key,
RankPos: iterCount + startPos, Rank: iterCount + startPos,
SortData: rankData.SortData, SortData: rankData.SortData,
Data: rankData.Data, Data: rankData.Data,
}) })
@@ -231,7 +268,7 @@ func (rs *RankSkip) GetRankDataFromToLimit(startPos, count uint64, result *rpc.R
} }
// checkCanInsert 检查是否能插入 // checkCanInsert 检查是否能插入
func (rs *RankSkip) checkCanInsert(upsetData *rpc.RankData) bool { func (rs *RankSkip) checkInsertAndReplace(upsetData *rpc.RankData) bool {
//maxLen为0不限制长度 //maxLen为0不限制长度
if rs.maxLen == 0 { if rs.maxLen == 0 {
return true return true
@@ -254,9 +291,11 @@ func (rs *RankSkip) checkCanInsert(upsetData *rpc.RankData) bool {
//移除最后一位 //移除最后一位
//回调模块该RandData从排行中删除 //回调模块该RandData从排行中删除
rs.rankDataExpire.RemoveExpireKey(lastRankData.Key)
rs.rankModule.OnLeaveRank(rs, []*RankData{lastRankData}) rs.rankModule.OnLeaveRank(rs, []*RankData{lastRankData})
rs.skipList.Delete(lastPosData) rs.skipList.Delete(lastPosData)
delete(rs.mapRankData, lastRankData.Key) delete(rs.mapRankData, lastRankData.Key)
ReleaseRankData(lastRankData) ReleaseRankData(lastRankData)
return true return true
} }