@spec clear_cache() :: :ok | {:error, term()}
@spec fetch(binary()) :: {:hit, binary()} | {:error, term()} | :miss
@spec put_if_not_exist(binary(), binary()) :: :ok | {:error, term()}