This commit is contained in:
finley
2022-08-21 05:30:00 +08:00
parent 9da335811f
commit dddf9a8f6b
4 changed files with 71 additions and 2 deletions

View File

@@ -204,13 +204,29 @@ func (sortedSet *SortedSet) RangeByScore(min *ScoreBorder, max *ScoreBorder, off
// RemoveByScore removes members which score within the given border
func (sortedSet *SortedSet) RemoveByScore(min *ScoreBorder, max *ScoreBorder) int64 {
removed := sortedSet.skiplist.RemoveRangeByScore(min, max)
removed := sortedSet.skiplist.RemoveRangeByScore(min, max, 0)
for _, element := range removed {
delete(sortedSet.dict, element.Member)
}
return int64(len(removed))
}
func (sortedSet *SortedSet) PopMin(count int) []*Element {
first := sortedSet.skiplist.getFirstInScoreRange(negativeInfBorder, positiveInfBorder)
if first == nil {
return nil
}
border := &ScoreBorder{
Value: first.Score,
Exclude: false,
}
removed := sortedSet.skiplist.RemoveRangeByScore(border, border, count)
for _, element := range removed {
delete(sortedSet.dict, element.Member)
}
return removed
}
// RemoveByRank removes member ranking within [start, stop)
// sort by ascending order and rank starts from 0
func (sortedSet *SortedSet) RemoveByRank(start int64, stop int64) int64 {