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

@@ -281,7 +281,7 @@ func (skiplist *skiplist) getLastInScoreRange(min *ScoreBorder, max *ScoreBorder
/*
* return removed elements
*/
func (skiplist *skiplist) RemoveRangeByScore(min *ScoreBorder, max *ScoreBorder) (removed []*Element) {
func (skiplist *skiplist) RemoveRangeByScore(min *ScoreBorder, max *ScoreBorder, limit int) (removed []*Element) {
update := make([]*node, maxLevel)
removed = make([]*Element, 0)
// find backward nodes (of target range) or last node of each level
@@ -308,6 +308,9 @@ func (skiplist *skiplist) RemoveRangeByScore(min *ScoreBorder, max *ScoreBorder)
removedElement := node.Element
removed = append(removed, &removedElement)
skiplist.removeNode(node, update)
if limit > 0 && len(removed) == limit {
break
}
node = next
}
return removed