Ferricstore.Commands.SortedSet (ferricstore v0.3.2)

Copy Markdown View Source

Handles Redis sorted set commands: ZADD, ZSCORE, ZRANK, ZRANGE, ZCARD, ZREM, ZINCRBY, ZCOUNT, ZPOPMIN, ZPOPMAX, ZRANGEBYSCORE, ZREVRANGE, ZSCAN, ZRANDMEMBER, ZMSCORE.

Each sorted set member is stored as a compound key:

Z:redis_key\0member -> score_string

The score is stored as a string representation of a float64. This allows O(1) score lookups by member. For range queries, all members are loaded and sorted in memory -- acceptable for typical sorted set sizes in cache workloads.

Type Enforcement

All sorted set commands check type metadata. Using sorted set commands on a key that holds a different type returns WRONGTYPE.

Summary

Functions

Handles a sorted set command.

Functions

handle(cmd, args, store)

@spec handle(binary(), [binary()], map()) :: term()

Handles a sorted set command.

Parameters

  • cmd - Uppercased command name (e.g. "ZADD", "ZRANGE")
  • args - List of string arguments
  • store - Injected store map with compound key callbacks

Returns

Plain Elixir term: integer, float, string, list, nil, or {:error, message}.