Unified interface for store operations.
Dispatches based on the type of store argument:
%FerricStore.Instance{}struct -> calls Router directly%LocalTxStore{}struct -> local ETS for same-shard, Router for remote- map (closure-based store) -> calls the closure
This allows incremental migration from closure maps to instance structs without changing command handler logic.
Summary
Functions
@spec append(store(), binary(), binary()) :: {:ok, non_neg_integer()}
@spec cas(store(), binary(), binary(), binary(), non_neg_integer() | nil) :: 1 | 0 | nil
@spec compound_count(store(), binary(), binary()) :: non_neg_integer()
@spec compound_get_meta(store(), binary(), binary()) :: {binary(), non_neg_integer()} | nil
@spec compound_put(store(), binary(), binary(), binary(), non_neg_integer()) :: :ok
@spec dbsize(store()) :: non_neg_integer()
@spec delete(store(), binary()) :: :ok
@spec extend(store(), binary(), binary(), pos_integer()) :: 1 | {:error, binary()}
@spec flush(store()) :: :ok
@spec get_meta(store(), binary()) :: {binary(), non_neg_integer()} | nil
@spec getex(store(), binary(), non_neg_integer()) :: binary() | nil
@spec has_compound?(store()) :: boolean()
@spec keys(store()) :: [binary()]
@spec lock(store(), binary(), binary(), pos_integer()) :: :ok | {:error, binary()}
@spec on_push(store(), binary()) :: :ok | nil
@spec put(store(), binary(), binary(), non_neg_integer()) :: :ok | {:error, binary()}
@spec ratelimit_add(store(), binary(), pos_integer(), pos_integer(), pos_integer()) :: [term()]
@spec setrange(store(), binary(), non_neg_integer(), binary()) :: {:ok, non_neg_integer()}