Sorted Set Commands¶
Sorted sets rank members by a floating-point score. Members are unique; scores can repeat.
zadd¶
r.zadd("leaderboard", {"alice": 100, "bob": 85, "carol": 92}) # 3
# Conditional flags
r.zadd("leaderboard", {"alice": 110}, xx=True) # update only if exists
r.zadd("leaderboard", {"dave": 50}, nx=True) # add only if not exists
r.zadd("leaderboard", {"bob": 90}, gt=True) # update only if new > old
r.zadd("leaderboard", {"bob": 80}, lt=True) # update only if new < old
r.zadd("leaderboard", {"alice": 110}, ch=True) # return changed (not just added)
Returns: Number of elements added (or changed, if ch=True).
zscore / zrank / zcard¶
r.zscore("leaderboard", "alice") # 110.0
r.zrank("leaderboard", "alice") # 2 (0-based, ascending)
r.zcard("leaderboard") # 4
zrange / zrevrange¶
# Ascending (lowest score first)
r.zrange("leaderboard", 0, -1)
# ['dave', 'bob', 'carol', 'alice']
# With scores (flat list, not tuples)
r.zrange("leaderboard", 0, 2, withscores=True)
# ['dave', '50', 'bob', '90', 'carol', '92']
# Descending (highest score first)
r.zrevrange("leaderboard", 0, 2, withscores=True)
# ['alice', '110', 'carol', '92', 'bob', '90']
zrangebyscore¶
r.zrangebyscore("leaderboard", 80, 100)
# ['bob', 'carol']
r.zrangebyscore("leaderboard", "-inf", "+inf", withscores=True)
# all members with scores
# With pagination
r.zrangebyscore("leaderboard", 0, 100, offset=0, count=10)