Lux Docs

Build on Lux without guessing.

Lux Cloud + OSS core

Product docs for the Lux runtime: tables, cache, vectors, realtime, time series, auth, HTTP, SDK, CLI, and self-hosting.

Sorted Sets

Sorted sets combine the uniqueness of sets with a score for each member, maintaining elements in sorted order. They are ideal for leaderboards, rate limiters, priority queues, and ranking systems.

ZADD / ZSCORE / ZRANK

Add members with scores, retrieve scores, or get the rank (0-based position) of a member. ZADD supports NX, XX, GT, LT, and CH flags.

Syntax
ZADD key [NX | XX] [GT | LT] [CH] score member [score member ...]
ZSCORE key member
ZRANK key member
ZREVRANK key member
Example
> ZADD leaderboard 100 "alice" 85 "bob" 92 "carol"
(integer) 3
> ZSCORE leaderboard "alice"
"100"
> ZRANK leaderboard "bob"
(integer) 0
> ZREVRANK leaderboard "alice"
(integer) 0

ZRANGE

The unified range command. Returns members in a range by rank, score, or lexicographic order. Use REV to reverse the order and WITHSCORES to include scores.

Syntax
ZRANGE key min max [BYSCORE | BYLEX] [REV] [LIMIT offset count] [WITHSCORES]
Example
> ZRANGE leaderboard 0 -1 WITHSCORES
1) "bob"
2) "85"
3) "carol"
4) "92"
5) "alice"
6) "100"
> ZRANGE leaderboard 0 2 REV WITHSCORES
1) "alice"
2) "100"
3) "carol"
4) "92"
5) "bob"
6) "85"
> ZRANGE leaderboard 90 100 BYSCORE WITHSCORES
1) "carol"
2) "92"
3) "alice"
4) "100"

ZREM / ZCARD / ZCOUNT / ZINCRBY

Remove members, count total or in-range members, and atomically increment a member's score.

Example
> ZCARD leaderboard
(integer) 3
> ZCOUNT leaderboard 90 100
(integer) 2
> ZINCRBY leaderboard 15 "bob"
"100"
> ZREM leaderboard "carol"
(integer) 1

ZPOPMIN / ZPOPMAX / BZPOPMIN / BZPOPMAX

Pop members with the lowest or highest scores. The blocking variants wait when the sorted set is empty, useful for priority queue patterns.

Example
> ZADD pq 1 "low" 5 "medium" 10 "high"
(integer) 3
> ZPOPMIN pq
1) "low"
2) "1"
> ZPOPMAX pq
1) "high"
2) "10"
> BZPOPMIN pq 30
1) "pq"
2) "medium"
3) "5"

ZUNIONSTORE / ZINTERSTORE / ZDIFFSTORE

Compute and store the union, intersection, or difference of multiple sorted sets. Supports WEIGHTS and AGGREGATE options to control how scores combine.

Syntax
ZUNIONSTORE dest numkeys key [key ...] [WEIGHTS weight ...] [AGGREGATE SUM|MIN|MAX]
Example
> ZADD week1 10 "alice" 20 "bob"
(integer) 2
> ZADD week2 15 "alice" 5 "carol"
(integer) 2
> ZUNIONSTORE total 2 week1 week2
(integer) 3
> ZRANGE total 0 -1 WITHSCORES
1) "carol"
2) "5"
3) "bob"
4) "20"
5) "alice"
6) "25"

Command Reference

CommandDescription
ZADDAdd members with scores
ZSCOREGet the score of a member
ZMSCOREGet scores of multiple members
ZRANKGet the rank of a member (ascending)
ZREVRANKGet the rank of a member (descending)
ZREMRemove one or more members
ZCARDGet the number of members
ZCOUNTCount members in a score range
ZINCRBYIncrement a member's score
ZRANGEReturn members by rank, score, or lex range
ZPOPMINRemove and return lowest-scored members
ZPOPMAXRemove and return highest-scored members
BZPOPMINBlocking pop of lowest-scored member
BZPOPMAXBlocking pop of highest-scored member
ZUNIONSTOREStore union of sorted sets
ZINTERSTOREStore intersection of sorted sets
ZDIFFSTOREStore difference of sorted sets
ZSCANIncrementally iterate over members
ZRANGEBYSCOREReturn members in a score range (legacy)
ZREVRANGEBYSCOREReturn members in a score range, reversed (legacy)
ZRANGEBYLEXReturn members in a lexicographic range