intelephense

1.14.41.16.1
lib/stub/relay/Cluster.php
lib/stub/relay/Cluster.php
+645−259
Index: package/lib/stub/relay/Cluster.php
===================================================================
--- package/lib/stub/relay/Cluster.php
+++ package/lib/stub/relay/Cluster.php
@@ -36,35 +36,52 @@
 
     /**
      * Integer representing distribute failover.
      *
-     * Always distribute readonly commands between master and slaves, at random
+     * Always distribute readonly commands between master and slaves, at random.
      *
      * @var int
      */
     public const FAILOVER_DISTRIBUTE = 2;
 
     /**
      * Integer representing distribute slaves failover.
      *
-     * Always distribute readonly commands to the slaves, at random
+     * Always distribute readonly commands to the slaves, at random.
      *
      * @var int
      */
     public const FAILOVER_DISTRIBUTE_SLAVES = 3;
 
     /**
+     * Integer representing the availability zone option.
+     *
+     * @var int
+     */
+    public const OPT_AVAILABILITY_ZONE = 110;
+
+    /**
+     * The adaptive cache object.
+     *
+     * @readonly
+     * @var AdaptiveCache
+     */
+    public AdaptiveCache $adaptiveCache;
+
+    /**
      * Create a cluster object.
      *
+     * @see Relay::__construct() for context options.
+     *
      * @param  string|null  $name
      * @param  array|null  $seeds
      * @param  int|float  $connect_timeout
      * @param  int|float  $command_timeout
      * @param  bool  $persistent
      * @param  mixed  $auth
      * @param  array|null  $context
      */
-    #[\Relay\Attributes\Server]
+    #[Attributes\Server]
     public function __construct(
         string|null $name,
         array|null $seeds = null,
         int|float $connect_timeout = 0,
@@ -79,17 +96,17 @@
      *
      * @param  string  $value
      * @return string
      */
-    #[\Relay\Attributes\Local]
+    #[Attributes\Local]
     public function _compress(string $value): string {}
 
     /**
      * Returns the number of milliseoconds since Relay has received a reply from the cluster.
      *
      * @return int
      */
-    #[\Relay\Attributes\Local]
+    #[Attributes\Local]
     public function idleTime(): int {}
 
     /**
      * Returns an array of endpoints along with each of their keys cached in runtime memory.
@@ -99,95 +116,95 @@
      */
     public function _getKeys(): array|false {}
 
     /**
-     * Return a list of master nodes
+     * Return a list of master nodes.
      *
      * @return array
      */
-    #[\Relay\Attributes\Local]
+    #[Attributes\Local]
     public function _masters(): array {}
 
     /**
      * Returns the serialized and compressed value.
      *
      * @param  mixed  $value
      * @return string
      */
-    #[\Relay\Attributes\Local]
+    #[Attributes\Local]
     public function _pack(mixed $value): string {}
 
     /**
      * Returns the value with the prefix.
      *
      * @param  mixed  $value
      * @return string
      */
-    #[\Relay\Attributes\Local]
+    #[Attributes\Local]
     public function _prefix(mixed $value): string {}
 
     /**
      * Returns the serialized value.
      *
      * @param  mixed  $value
      * @return string
      */
-    #[\Relay\Attributes\Local]
+    #[Attributes\Local]
     public function _serialize(mixed $value): string {}
 
     /**
      * Uncompress data with Relay's currently configured compression algorithm.
      *
      * @param  string  $value
      * @return string
      */
-    #[\Relay\Attributes\Local]
+    #[Attributes\Local]
     public function _uncompress(string $value): string {}
 
     /**
      * Returns the unserialized and decompressed value.
      *
      * @param  string  $value
      * @return mixed
      */
-    #[\Relay\Attributes\Local]
+    #[Attributes\Local]
     public function _unpack(string $value): mixed {}
 
     /**
      * Returns the unserialized value.
      *
      * @param  string  $value
      * @return mixed
      */
-    #[\Relay\Attributes\Local]
+    #[Attributes\Local]
     public function _unserialize(string $value): mixed {}
 
     /**
-     * Interact with Redis' ACLs
+     * Interact with ACLs.
      *
      * @param  string  $operation
      * @param  string  $args,...
      * @return mixed
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function acl(array|string $key_or_address, string $operation, string ...$args): mixed {}
 
     /**
      * Adds allow pattern(s). Only matching keys will be cached in memory.
      *
      * @param  string  $pattern,...
      * @return int
      */
-    #[\Relay\Attributes\Local]
+    #[Attributes\Local]
     public function addAllowPatterns(string ...$pattern): int {}
 
     /**
      * Adds ignore pattern(s). Matching keys will not be cached in memory.
      *
      * @param  string  $pattern,...
      * @return int
      */
-    #[\Relay\Attributes\Local]
+    #[Attributes\Local]
     public function addIgnorePatterns(string ...$pattern): int {}
 
     /**
      * If key already exists and is a string, this command appends
@@ -198,39 +215,39 @@
      * @param  mixed  $key
      * @param  mixed  $value
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function append(mixed $key, mixed $value): Cluster|int|false {}
 
     /**
      * Asynchronously rewrite the append-only file.
      *
      * @param  array|string  $key_or_address
      * @return Cluster|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function bgrewriteaof(array|string $key_or_address): Cluster|bool {}
 
     /**
      * Paus the client until sufficient local and/or remote AOF data has been flushed to disk.
      *
      * @param  array|string  $key_or_address
      * @param  int  $numlocal
      * @param  int  $numremote
-     * @return Relay|array
+     * @return Cluster|array
      */
-    #[\Relay\Attributes\RedisCommand]
-    public function waitaof(array|string $key_or_address, int $numlocal, int $numremote, int $timeout): Relay|array|false {}
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
+    public function waitaof(array|string $key_or_address, int $numlocal, int $numremote, int $timeout): Cluster|array|false {}
 
     /**
      * Asynchronously save the dataset to disk.
      *
      * @param  array|string  $key_or_address
      * @param  bool  $schedule
      * @return Cluster|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function bgsave(array|string $key_or_address, bool $schedule = false): Cluster|bool {}
 
     /**
      * Count the number of set bits (population counting) in a string.
@@ -240,9 +257,9 @@
      * @param  int  $end
      * @param  bool  $by_bit
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached]
     public function bitcount(mixed $key, int $start = 0, int $end = -1, bool $by_bit = false): Cluster|int|false {}
 
     /**
      * Perform a bitwise operation on one or more keys, storing the result in a new key.
@@ -252,9 +269,9 @@
      * @param  string  $srckey
      * @param  string  $other_keys,...
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function bitop(string $operation, string $dstkey, string $srckey, string ...$other_keys): Cluster|int|false {}
 
     /**
      * Return the position of the first bit set to 1 or 0 in a string.
@@ -265,9 +282,9 @@
      * @param  int  $end
      * @param  bool  $by_bit
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function bitpos(mixed $key, int $bit, int $start = null, int $end = null, bool $by_bit = false): Cluster|int|false {}
 
     /**
      * BLMOVE is the blocking variant of LMOVE. When source contains elements,
@@ -280,21 +297,21 @@
      * @param  string  $dstpos
      * @param  float  $timeout
      * @return Cluster|string|null|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function blmove(mixed $srckey, mixed $dstkey, string $srcpos, string $dstpos, float $timeout): Cluster|string|null|false {}
 
     /**
-     * Pop elements from a list, or block until one is available
+     * Pop elements from a list, or block until one is available.
      *
      * @param  float  $timeout
      * @param  array  $keys
      * @param  string  $from
      * @param  int  $count
      * @return Cluster|array|null|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function blmpop(float $timeout, array $keys, string $from, int $count = 1): mixed {}
 
     /**
      * BLPOP is a blocking list pop primitive. It is the blocking version of LPOP because
@@ -304,9 +321,9 @@
      * @param  string|float  $timeout_or_key
      * @param  array  $extra_args,...
      * @return Cluster|array|null|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function blpop(string|array $key, string|float $timeout_or_key, mixed ...$extra_args): Cluster|array|null|false {}
 
     /**
      * BRPOP is a blocking list pop primitive. It is the blocking version of RPOP because
@@ -316,9 +333,9 @@
      * @param  string|float  $timeout_or_key
      * @param  array  $extra_args,...
      * @return Cluster|array|null|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function brpop(string|array $key, string|float $timeout_or_key, mixed ...$extra_args): Cluster|array|null|false {}
 
     /**
      * Atomically returns and removes the last element (tail) of the list stored at source,
@@ -329,21 +346,21 @@
      * @param  mixed  $dstkey
      * @param  float  $timeout
      * @return mixed
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Deprecated]
     public function brpoplpush(mixed $srckey, mixed $dstkey, float $timeout): mixed {}
 
     /**
-     * Remove and return members with scores in a sorted set or block until one is available
+     * Remove and return members with scores in a sorted set or block until one is available.
      *
      * @param  float  $timeout
      * @param  array  $keys
      * @param  string  $from
      * @param  int  $count
      * @return Cluster|array|null|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function bzmpop(float $timeout, array $keys, string $from, int $count = 1): Cluster|array|null|false {}
 
     /**
      * BZPOPMAX is the blocking variant of the sorted set ZPOPMAX primitive.
@@ -352,9 +369,9 @@
      * @param  string|float  $timeout_or_key
      * @param  array  $extra_args,...
      * @return Cluster|array|null|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function bzpopmax(string|array $key, string|float $timeout_or_key, mixed ...$extra_args): Cluster|array|null|false {}
 
     /**
      * BZPOPMIN is the blocking variant of the sorted set ZPOPMIN primitive.
@@ -363,23 +380,23 @@
      * @param  string|float  $timeout_or_key
      * @param  array  $extra_args,...
      * @return Cluster|array|null|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function bzpopmin(string|array $key, string|float $timeout_or_key, mixed ...$extra_args): Cluster|array|null|false {}
 
     /**
      * Clears the last error that is set, if any.
      *
      * @return bool
      */
-    #[\Relay\Attributes\Local]
+    #[Attributes\Local]
     public function clearLastError(): bool {}
 
     /**
      * @return bool
      */
-    #[\Relay\Attributes\Local]
+    #[Attributes\Local]
     public function clearTransferredBytes(): bool {}
 
     /**
      * Executes `CLIENT` command operations.
@@ -388,17 +405,17 @@
      * @param  string  $operation
      * @param  mixed  $args,...
      * @return mixed
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function client(array|string $key_or_address, string $operation, mixed ...$args): mixed {}
 
     /**
      * Closes the current connection, if it's persistent.
      *
      * @return bool
      */
-    #[\Relay\Attributes\Local]
+    #[Attributes\Local]
     public function close(): bool {}
 
     /**
      * Executes `CLUSTER` command operations.
@@ -407,9 +424,9 @@
      * @param  string  $operation
      * @param  mixed  $args,...
      * @return mixed
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function cluster(array|string $key_or_address, string $operation, mixed ...$args): mixed {}
 
     /**
      * This is a container command for runtime configuration commands.
@@ -418,18 +435,18 @@
      * @param  string  $operation
      * @param  mixed  $args,...
      * @return Cluster|array|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function config(array|string $key_or_address, string $operation, mixed ...$args): mixed {}
 
     /**
      * Return an array with details about every Redis command.
      *
      * @param  array  $args,...
      * @return Cluster|array|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function command(mixed ...$args): Cluster|array|int|false {}
 
     /**
      * This command copies the value stored at the source key to the destination key.
@@ -438,17 +455,17 @@
      * @param  mixed  $dstkey
      * @param  array|null  $options
      * @return Cluster|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function copy(mixed $srckey, mixed $dstkey, array|null $options = null): Cluster|bool {}
 
     /**
      * Returns the number of keys in the currently-selected database.
      *
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function dbsize(array|string $key_or_address): Cluster|int|false {}
 
     /**
      * Decrements the number stored at key by one.
@@ -456,9 +473,9 @@
      * @param  mixed  $key
      * @param  int  $by
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function decr(mixed $key, int $by = 1): Cluster|int|false {}
 
     /**
      * Decrements the number stored at key by decrement.
@@ -466,44 +483,54 @@
      * @param  mixed  $key
      * @param  int  $value
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function decrby(mixed $key, int $value): Cluster|int|false {}
 
     /**
      * Removes the specified keys.
      *
      * @param  mixed  $keys,...
      * @return Cluster|int|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function del(mixed ...$keys): Cluster|int|bool {}
 
     /**
+     * Remove a key if it equals the provided value.
+     *
+     * @param  mixed  $key
+     * @param  mixed  $value
+     * @return Cluster|int|false
+     */
+    #[Attributes\ValkeyCommand]
+    public function delifeq(mixed $key, mixed $value): Cluster|int|false {}
+
+    /**
      * Flushes all previously queued commands in a transaction and restores the connection state to normal.
      * If WATCH was used, DISCARD unwatches all keys watched by the connection.
      *
      * @return bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function discard(): bool {}
 
     /**
      * Dispatches all pending events.
      *
      * @return int|false
      */
-    #[\Relay\Attributes\Local]
+    #[Attributes\Local]
     public function dispatchEvents(): int|false {}
 
     /**
      * Serialize and return the value stored at key in a Redis-specific format.
      *
      * @param  mixed  $key
      * @return Cluster|string|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function dump(mixed $key): Cluster|string|false {}
 
     /**
      * Asks Redis to echo back the provided string.
@@ -511,17 +538,17 @@
      * @param  array|string  $key_or_address
      * @param  string  $message
      * @return Cluster|string|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function echo(array|string $key_or_address, string $message): Cluster|string|false {}
 
     /**
      * Returns the connection's endpoint identifier.
      *
      * @return array|false
      */
-    #[\Relay\Attributes\Local]
+    #[Attributes\Local]
     public function endpointId(): array|false {}
 
     /**
      * Evaluate script using the Lua interpreter.
@@ -532,13 +559,13 @@
      * @param  array  $args
      * @param  int  $num_keys
      * @return mixed
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function eval(mixed $script, array $args = [], int $num_keys = 0): mixed {}
 
     /**
-     * Evaluate script using the Lua interpreter.  This is just the "read-only" variant of EVAL
+     * Evaluate script using the Lua interpreter. This is just the "read-only" variant of EVAL
      * meaning it can be run on read-only replicas.
      *
      * @see https://redis.io/commands/eval_ro
      *
@@ -546,9 +573,9 @@
      * @param  array  $args
      * @param  int  $num_keys
      * @return mixed
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function eval_ro(mixed $script, array $args = [], int $num_keys = 0): mixed {}
 
     /**
      * Evaluates a script cached on the server-side by its SHA1 digest.
@@ -557,38 +584,38 @@
      * @param  array  $args
      * @param  int  $num_keys
      * @return mixed
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function evalsha(string $sha, array $args = [], int $num_keys = 0): mixed {}
 
     /**
-     * Evaluates a script cached on the server-side by its SHA1 digest.  This is just the "read-only" variant
+     * Evaluates a script cached on the server-side by its SHA1 digest. This is just the "read-only" variant
      * of `EVALSHA` meaning it can be run on read-only replicas.
      *
      * @param  string  $sha
      * @param  array  $args
      * @param  int  $num_keys
      * @return mixed
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function evalsha_ro(string $sha, array $args = [], int $num_keys = 0): mixed {}
 
     /**
      * Executes all previously queued commands in a transaction and restores the connection state to normal.
      *
      * @return array|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function exec(): array|false {}
 
     /**
      * Returns if key(s) exists.
      *
      * @param  mixed  $keys,...
      * @return Cluster|int|bool
      */
-    #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached]
     public function exists(mixed ...$keys): Cluster|int|bool {}
 
     /**
      * Set a timeout on key.
@@ -597,9 +624,9 @@
      * @param  int  $seconds
      * @param  string|null  $mode
      * @return Cluster|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function expire(mixed $key, int $seconds, string|null $mode = null): Cluster|bool {}
 
     /**
      * Set a timeout on key using a unix timestamp.
@@ -607,9 +634,9 @@
      * @param  mixed  $key
      * @param  int  $timestamp
      * @return Cluster|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function expireat(mixed $key, int $timestamp): Cluster|bool {}
 
     /**
      * Returns the absolute Unix timestamp in seconds at which the given key will expire.
@@ -618,9 +645,9 @@
      *
      * @param  mixed  $key
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function expiretime(mixed $key): Cluster|int|false {}
 
     /**
      * @see \Relay\Relay::flushMemory()
@@ -628,9 +655,9 @@
      * @param  string|null  $endpointId
      * @param  int|null  $db
      * @return bool
      */
-    #[\Relay\Attributes\Local]
+    #[Attributes\Local]
     public static function flushMemory(?string $endpointId = null, int $db = null): bool {}
 
     /**
      * Deletes all the keys of all the existing databases, not just the currently selected one.
@@ -638,9 +665,9 @@
      * @param  array|string  $key_or_address
      * @param  bool|null  $sync
      * @return Cluster|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function flushall(array|string $key_or_address, bool|null $sync = null): Cluster|bool {}
 
     /**
      * Deletes all the keys of the currently selected database.
@@ -648,22 +675,30 @@
      * @param  array|string  $key_or_address
      * @param  bool|null  $sync
      * @return Cluster|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function flushdb(array|string $key_or_address, bool|null $sync = null): Cluster|bool {}
 
     /**
-     * Add one or more members to a geospacial sorted set
+     * Flush the persistent slot cache, if one exists.
      *
+     * @return bool
+     */
+    #[Attributes\Local]
+    public function flushSlotCache(): bool {}
+
+    /**
+     * Add one or more members to a geospacial sorted set.
+     *
      * @param  mixed  $key
      * @param  float  $lng
      * @param  float  $lat
      * @param  string  $member
      * @param  mixed  $other_triples_and_options,...
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function geoadd(mixed $key, float $lng, float $lat, string $member, mixed ...$other_triples_and_options): Cluster|int|false {}
 
     /**
      * Get the distance between two members of a geospacially encoded sorted set.
@@ -673,9 +708,9 @@
      * @param  string  $dst
      * @param  string|null  $unit
      * @return Cluster|float|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function geodist(mixed $key, string $src, string $dst, string|null $unit = null): Cluster|float|false {}
 
     /**
      * Retrieve one or more GeoHash encoded strings for members of the set.
@@ -684,9 +719,9 @@
      * @param  string  $member
      * @param  string  $other_members,...
      * @return Cluster|array|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function geohash(mixed $key, string $member, string ...$other_members): Cluster|array|false {}
 
     /**
      * Return the positions (longitude,latitude) of all the specified members
@@ -695,9 +730,9 @@
      * @param  mixed  $key
      * @param  mixed  $members,...
      * @return Cluster|array|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function geopos(mixed $key, mixed ...$members): Cluster|array|false {}
 
     /**
      * Retrieve members of a geospacially sorted set that are within a certain radius of a location.
@@ -709,9 +744,9 @@
      * @param  string  $unit
      * @param  array  $options
      * @return mixed
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Deprecated]
     public function georadius(mixed $key, float $lng, float $lat, float $radius, string $unit, array $options = []): mixed {}
 
     /**
      * Retrieve members of a geospacially sorted set that are within a certain radius of a location.
@@ -723,9 +758,9 @@
      * @param  string  $unit
      * @param  array  $options
      * @return mixed
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Deprecated]
     public function georadius_ro(mixed $key, float $lng, float $lat, float $radius, string $unit, array $options = []): mixed {}
 
     /**
      * Similar to `GEORADIUS` except it uses a member as the center of the query.
@@ -736,9 +771,9 @@
      * @param  string  $unit
      * @param  array  $options
      * @return mixed
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Deprecated]
     public function georadiusbymember(mixed $key, string $member, float $radius, string $unit, array $options = []): mixed {}
 
     /**
      * Similar to `GEORADIUS` except it uses a member as the center of the query.
@@ -749,9 +784,9 @@
      * @param  string  $unit
      * @param  array  $options
      * @return mixed
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Deprecated]
     public function georadiusbymember_ro(mixed $key, string $member, float $radius, string $unit, array $options = []): mixed {}
 
     /**
      * Search a geospacial sorted set for members in various ways.
@@ -760,16 +795,16 @@
      * @param  array|string  $position
      * @param  array|int|float  $shape
      * @param  string  $unit
      * @param  array  $options
-     * @return Cluster|array
+     * @return Cluster|array|false
      */
-    #[\Relay\Attributes\RedisCommand]
-    public function geosearch(mixed $key, array|string $position, array|int|float $shape, string $unit, array $options = []): Cluster|array {}
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
+    public function geosearch(mixed $key, array|string $position, array|int|float $shape, string $unit, array $options = []): Cluster|array|false {}
 
     /**
-     * Search a geospacial sorted set for members within a given area or range, storing the results into
-     * a new set.
+     * Search a geospacial sorted set for members within a given area or range,
+     * storing the results into a new set.
      *
      * @param  mixed  $dstkey
      * @param  mixed  $srckey
      * @param  array|string  $position
@@ -777,28 +812,42 @@
      * @param  string  $unit
      * @param  array  $options
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function geosearchstore(mixed $dstkey, mixed $srckey, array|string $position, array|int|float $shape, string $unit, array $options = []): Cluster|int|false {}
 
     /**
      * Get the value of key.
      *
      * @param  mixed  $key
      * @return mixed
      */
-    #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached]
     public function get(mixed $key): mixed {}
 
     /**
+     * Get the value and metadata of key.
+     *
+     * Result is an array with value and metadata or `false` in case of error.
+     * Currently metadata contains following elements:
+     *  - cached  whether value comes from in-memory cache or from server
+     *  - length  number of bytes used to store value
+     *
+     * @param  mixed  $key
+     * @return Cluster|array{0: mixed, 1: array{cached: bool, length: int}}|false
+     */
+    #[Attributes\Server, Attributes\Cached]
+    public function getWithMeta(mixed $key): Cluster|array|false {}
+
+    /**
      * Returns the bit value at offset in the string value stored at key.
      *
      * @param  mixed  $key
      * @param  int  $pos
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached]
     public function getbit(mixed $key, int $pos): Cluster|int|false {}
 
     /**
      * Get the value of key and optionally set its expiration.
@@ -807,17 +856,28 @@
      * @param  mixed  $key
      * @param  array  $options
      * @return mixed
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function getex(mixed $key, ?array $options = null): mixed {}
 
     /**
+     * Get the value of key and delete the key. This command is similar to GET,
+     * except for the fact that it also deletes the key on success
+     * (if and only if the key's value type is a string).
+     *
+     * @param  mixed  $key
+     * @return mixed
+     */
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
+    public function getdel(mixed $key): mixed {}
+
+    /**
      * Returns the last error message, if any.
      *
      * @return string|null
      */
-    #[\Relay\Attributes\Local]
+    #[Attributes\Local]
     public function getLastError(): string|null {}
 
     /**
      * Get the mode Relay is currently in.
@@ -825,24 +885,24 @@
      *
      * @param  bool  $masked
      * @return int
      */
-    #[\Relay\Attributes\Local]
+    #[Attributes\Local]
     public function getMode(bool $masked = false): int {}
 
     /**
      * Returns a client option.
      *
      * @param  int  $option
      * @return mixed
      */
-    #[\Relay\Attributes\Local]
+    #[Attributes\Local]
     public function getOption(int $option): mixed {}
 
     /**
      * @return array|false
      */
-    #[\Relay\Attributes\Local]
+    #[Attributes\Local]
     public function getTransferredBytes(): array|false {}
 
     /**
      * Returns the substring of the string value stored at key,
@@ -852,9 +912,9 @@
      * @param  int  $start
      * @param  int  $end
      * @return Cluster|string|false
      */
-    #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached]
     public function getrange(mixed $key, int $start, int $end): Cluster|string|false {}
 
     /**
      * Atomically sets key to value and returns the old value stored at key.
@@ -862,9 +922,9 @@
      * @param  mixed  $key
      * @param  mixed  $value
      * @return mixed
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Deprecated]
     public function getset(mixed $key, mixed $value): mixed {}
 
     /**
      * Removes the specified fields from the hash stored at key.
@@ -873,9 +933,9 @@
      * @param  mixed  $member
      * @param  string  $members,...
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function hdel(mixed $key, mixed $member, mixed ...$members): Cluster|int|false {}
 
     /**
      * Returns if field is an existing field in the hash stored at key.
@@ -883,28 +943,126 @@
      * @param  mixed  $key
      * @param  mixed  $member
      * @return Cluster|bool
      */
-    #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached]
     public function hexists(mixed $key, mixed $member): Cluster|bool {}
 
     /**
+     * Se an expiration for one or more hash fields.
+     *
+     * @param  mixed  $hash
+     * @param  int  $ttl
+     * @param  array  $fields
+     * @param  string  $mode
+     * @return Cluster|array|false
+     */
+    #[Attributes\RedisCommand]
+    public function hexpire(mixed $hash, int $ttl, array $fields, ?string $mode = null): Cluster|array|false {}
+
+    /**
+     * Set a millisecond resolution expiry on one or more hash fields.
+     *
+     * @param  mixed  $hash
+     * @param  int  $ttl
+     * @param  array  $fields
+     * @param  string  $mode
+     * @return Cluster|array|false
+     */
+    #[Attributes\RedisCommand]
+    public function hpexpire(mixed $hash, int $ttl, array $fields, ?string $mode = null): Cluster|array|false {}
+
+    /**
+     * Set a unix timestamp expiration for one or more hash fields.
+     *
+     * @param  mixed  $hash
+     * @param  int  $ttl
+     * @param  array  $fields
+     * @param  string  $mode
+     * @return Cluster|array|false
+     */
+    #[Attributes\RedisCommand]
+    public function hexpireat(mixed $hash, int $ttl, array $fields, ?string $mode = null): Cluster|array|false {}
+
+    /**
+     * Set a millisecond resolution unix timestamp expiration for one or more hash fields.
+     *
+     * @param  mixed  $hash
+     * @param  int  $ttl
+     * @param  array  $fields
+     * @param  string  $mode
+     * @return Cluster|array|false
+     */
+    #[Attributes\RedisCommand]
+    public function hpexpireat(mixed $hash, int $ttl, array $fields, ?string $mode = null): Cluster|array|false {}
+
+    /**
+     * Get the expire time in seconds for one or more hash fields.
+     *
+     * @param  mixed  $hash
+     * @param  array  $fields
+     * @return Cluster|array|false
+     */
+    #[Attributes\RedisCommand]
+    public function httl(mixed $hash, array $fields): Cluster|array|false {}
+
+    /**
+     * Get the expire time in milliseconds for one or more hash fields.
+     *
+     * @param  mixed  $hash
+     * @param  array  $fields
+     * @return Cluster|array|false
+     */
+    #[Attributes\RedisCommand]
+    public function hpttl(mixed $hash, array $fields): Cluster|array|false {}
+
+    /**
+     * Get the unix timestamp expiration time for one or more hash fields.
+     *
+     * @param  mixed  $hash
+     * @param  array  $fields
+     * @return Cluster|array|false
+     */
+    #[Attributes\RedisCommand]
+    public function hexpiretime(mixed $hash, array $fields): Cluster|array|false {}
+
+    /**
+     * Get the millisecond precision unix timestamp
+     * expiration time for one or more hash fields.
+     *
+     * @param  mixed  $hash
+     * @param  array  $fields
+     * @return Cluster|array|false
+     */
+    #[Attributes\RedisCommand]
+    public function hpexpiretime(mixed $hash, array $fields): Cluster|array|false {}
+
+    /**
+     * Persist one or more hash fields.
+     *
+     * @param  mixed  $hash
+     * @param  array  $fields
+     * @return Cluster|array|false
+     */
+    public function hpersist(mixed $hash, array $fields): Cluster|array|false {}
+
+    /**
      * Returns the value associated with field in the hash stored at key.
      *
      * @param  mixed  $key
      * @param  mixed  $member
      * @return mixed
      */
-    #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached]
     public function hget(mixed $key, mixed $member): mixed {}
 
     /**
      * Returns all fields and values of the hash stored at key.
      *
      * @param  mixed  $key
      * @return Cluster|array|false
      */
-    #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached]
     public function hgetall(mixed $key): Cluster|array|false {}
 
     /**
      * Increments the number stored at field in the hash stored at key by increment.
@@ -913,9 +1071,9 @@
      * @param  mixed  $member
      * @param  int  $value
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function hincrby(mixed $key, mixed $member, int $value): Cluster|int|false {}
 
     /**
      * Increment the specified field of a hash stored at key, and representing
@@ -925,27 +1083,27 @@
      * @param  mixed  $member
      * @param  float  $value
      * @return Cluster|float|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function hincrbyfloat(mixed $key, mixed $member, float $value): Cluster|float|bool {}
 
     /**
      * Returns all field names in the hash stored at key.
      *
      * @param  mixed  $key
      * @return Cluster|array|false
      */
-    #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached]
     public function hkeys(mixed $key): Cluster|array|false {}
 
     /**
      * Returns the number of fields contained in the hash stored at `$key`.
      *
      * @param  mixed  $key
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached]
     public function hlen(mixed $key): Cluster|int|false {}
 
     /**
      * Returns the values associated with the specified fields in the hash stored at key.
@@ -953,19 +1111,29 @@
      * @param  mixed  $key
      * @param  array  $members
      * @return Cluster|array|false
      */
-    #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached]
     public function hmget(mixed $key, array $members): Cluster|array|false {}
 
     /**
+     * Gets and deletes one or more hash fields.
+     *
+     * @param  mixed  $key
+     * @param  array  $fields
+     * @return Cluster|array|false
+     */
+    #[Attributes\RedisCommand]
+    public function hgetdel(mixed $key, array $fields): Cluster|array|false {}
+
+    /**
      * Sets the specified fields to their respective values in the hash stored at key.
      *
      * @param  mixed  $key
      * @param  array  $members
      * @return Cluster|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Deprecated]
     public function hmset(mixed $key, array $members): Cluster|bool {}
 
     /**
      * When called with just the key argument, return a random field from the hash value stored at key.
@@ -973,44 +1141,54 @@
      * @param  mixed  $key
      * @param  array  $options
      * @return Cluster|array|string|false
      */
-    #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached]
     public function hrandfield(mixed $key, array|null $options = null): Cluster|array|string|false {}
 
     /**
      * Iterates fields of Hash types and their associated values.
      *
      * @param  mixed  $key
-     * @param  mixed  $iterator
+     * @param  mixed  &$iterator
+     * @param-out mixed $iterator
      * @param  mixed  $match
      * @param  int  $count
      * @return array|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function hscan(mixed $key, mixed &$iterator, mixed $match = null, int $count = 0): array|false {}
 
     /**
      * Sets field in the hash stored at key to value.
      *
      * @param  mixed  $key
-     * @param  mixed  $member
-     * @param  mixed  $value
-     * @param  mixed  $kvals,...
+     * @param  mixed  $keys_and_vals...
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
-    public function hset(mixed $key, mixed $member, mixed $value, mixed ...$kvals): Cluster|int|false {}
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
+    public function hset(mixed $key, mixed ...$keys_and_vals): Cluster|int|false {}
 
     /**
+     * Set one or more hash fields and values with expiration options.
+     *
+     * @param  mixed  $key
+     * @param  array  $fields
+     * @param  null|int|float|array  $expiry = null
+     * @return Cluster|int|false
+     */
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
+    public function hsetex(mixed $key, array $fields, null|int|float|array $expiry = null): Cluster|int|false {}
+
+    /**
      * Sets field in the hash stored at key to value, only if field does not yet exist.
      *
      * @param  mixed  $key
      * @param  mixed  $member
      * @param  mixed  $value
      * @return Cluster|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function hsetnx(mixed $key, mixed $member, mixed $value): Cluster|bool {}
 
     /**
      * Returns the string length of the value associated with field in the hash stored at key.
@@ -1018,18 +1196,28 @@
      * @param  mixed  $key
      * @param  mixed  $member
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached]
     public function hstrlen(mixed $key, mixed $member): Cluster|int|false {}
 
     /**
+     * Returns one or more fields while also setting an expiration on them.
+     *
+     * @param  mixed  $hash
+     * @param  array  $fields
+     * @param  mixed  $expiry = null
+     * @return Cluster|array|false
+     */
+    public function hgetex(mixed $hash, array $fields, mixed $expiry = null): Cluster|array|false {}
+
+    /**
      * Returns all values in the hash stored at key.
      *
      * @param  mixed  $key
      * @return Cluster|array|false
      */
-    #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached]
     public function hvals(mixed $key): Cluster|array|false {}
 
     /**
      * Increments the number stored at key by one.
@@ -1037,9 +1225,9 @@
      * @param  mixed  $key
      * @param  int  $by
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function incr(mixed $key, int $by = 1): Cluster|int|false {}
 
     /**
      * Increments the number stored at key by increment.
@@ -1047,9 +1235,9 @@
      * @param  mixed  $key
      * @param  int  $value
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function incrby(mixed $key, int $value): Cluster|int|false {}
 
     /**
      * Increment the string representing a floating point number stored at key by the specified increment.
@@ -1057,9 +1245,9 @@
      * @param  mixed  $key
      * @param  float  $value
      * @return Cluster|float|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function incrbyfloat(mixed $key, float $value): Cluster|float|false {}
 
     /**
      * The INFO command returns information and statistics about Redis in a format
@@ -1070,26 +1258,44 @@
      * @param  array|string  $key_or_address
      * @param  string  $sections,...
      * @return Cluster|array|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function info(array|string $key_or_address, string ...$sections): Cluster|array|false {}
 
     /**
+     * Invaalidate all slot caches for across all workers.
+     *
+     * @return bool
+     */
+    #[Attributes\Local]
+    public static function invalidateSlotCaches(): bool {}
+
+    /**
      * Returns all keys matching pattern.
      *
      * @param  mixed  $pattern
      * @return Cluster|array|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function keys(mixed $pattern): Cluster|array|false {}
 
     /**
+     * @see \Relay\Relay::flushMemory()
+     *
+     * @param  string|null  $endpointId
+     * @param  int|null  $db
+     * @return float|false
+     */
+    #[Attributes\Local]
+    public static function lastMemoryFlush(?string $endpointId = null, int $db = null): float|false {}
+
+    /**
      * Returns the UNIX time stamp of the last successful save to disk.
      *
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function lastsave(array|string $key_or_address): Cluster|int|false {}
 
     /**
      * Get the longest common subsequence between two string keys.
@@ -1098,9 +1304,9 @@
      * @param  mixed  $key2
      * @param  array|null  $options
      * @return mixed
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function lcs(mixed $key1, mixed $key2, array|null $options = null): mixed {}
 
     /**
      * Returns the element at index index in the list stored at key.
@@ -1108,9 +1314,9 @@
      * @param  mixed  $key
      * @param  int  $index
      * @return mixed
      */
-    #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached]
     public function lindex(mixed $key, int $index): mixed {}
 
     /**
      * Inserts element in the list stored at key either before or after the reference value pivot.
@@ -1120,27 +1326,27 @@
      * @param  mixed  $pivot
      * @param  mixed  $element
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function linsert(mixed $key, string $op, mixed $pivot, mixed $element): Cluster|int|false {}
 
     /**
      * Registers a new event listener.
      *
      * @param  callable  $callback
      * @return bool
      */
-    #[\Relay\Attributes\Local]
+    #[Attributes\Local]
     public function listen(?callable $callback): bool {}
 
     /**
      * Returns the length of the list stored at `$key`.
      *
      * @param  mixed  $key
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached]
     public function llen(mixed $key): Cluster|int|false {}
 
     /**
      * Atomically returns and removes the first/last element of the list
@@ -1152,9 +1358,9 @@
      * @param  string  $srcpos
      * @param  string  $dstpos
      * @return Cluster|string|null|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function lmove(mixed $srckey, mixed $dstkey, string $srcpos, string $dstpos): Cluster|string|null|false {}
 
     /**
      * Pops one or more elements from the first non-empty list key from the list of provided key names.
@@ -1163,9 +1369,9 @@
      * @param  string  $from
      * @param  int  $count
      * @return Cluster|array|null|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function lmpop(array $keys, string $from, int $count = 1): mixed {}
 
     /**
      * Removes and returns the first elements of the list stored at key.
@@ -1173,9 +1379,9 @@
      * @param  mixed  $key
      * @param  int  $count
      * @return mixed
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function lpop(mixed $key, int $count = 1): mixed {}
 
     /**
      * The command returns the index of matching elements inside a Redis list.
@@ -1184,9 +1390,9 @@
      * @param  mixed  $value
      * @param  array  $options
      * @return mixed
      */
-    #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached]
     public function lpos(mixed $key, mixed $value, array|null $options = null): mixed {}
 
     /**
      * Insert all the specified values at the head of the list stored at key.
@@ -1195,9 +1401,9 @@
      * @param  mixed  $member
      * @param  mixed  $members,...
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function lpush(mixed $key, mixed $member, mixed ...$members): Cluster|int|false {}
 
     /**
      * Inserts specified values at the head of the list stored at key,
@@ -1207,9 +1413,9 @@
      * @param  mixed  $member
      * @param  mixed  $members,...
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function lpushx(mixed $key, mixed $member, mixed ...$members): Cluster|int|false {}
 
     /**
      * Returns the specified elements of the list stored at key.
@@ -1218,9 +1424,9 @@
      * @param  int  $start
      * @param  int  $stop
      * @return Cluster|array|false
      */
-    #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached]
     public function lrange(mixed $key, int $start, int $stop): Cluster|array|false {}
 
     /**
      * Removes the first count occurrences of elements equal to element from the list stored at key.
@@ -1229,9 +1435,9 @@
      * @param  mixed  $member
      * @param  int  $count
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function lrem(mixed $key, mixed $member, int $count = 0): Cluster|int|false {}
 
     /**
      * Sets the list element at index to element.
@@ -1240,9 +1446,9 @@
      * @param  int  $index
      * @param  mixed  $member
      * @return Cluster|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function lset(mixed $key, int $index, mixed $member): Cluster|bool {}
 
     /**
      * Trim an existing list so that it will contain only the specified range of elements specified.
@@ -1251,26 +1457,26 @@
      * @param  int  $start
      * @param  int  $end
      * @return Cluster|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function ltrim(mixed $key, int $start, int $end): Cluster|bool {}
 
     /**
      * Returns the number of bytes allocated, or `0` in client-only mode.
      *
      * @return int
      */
-    #[\Relay\Attributes\Local]
+    #[Attributes\Local]
     public static function maxMemory(): int {}
 
     /**
      * Returns the values of all specified keys.
      *
      * @param  array  $keys
      * @return Cluster|array|false
      */
-    #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached]
     public function mget(array $keys): Cluster|array|false {}
 
     /**
      * Sets the given keys to their respective values.
@@ -1278,9 +1484,9 @@
      *
      * @param  array  $kvals
      * @return Cluster|array|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function mset(array $kvals): Cluster|array|bool {}
 
     /**
      * Sets the given keys to their respective values.
@@ -1288,9 +1494,9 @@
      *
      * @param  array  $kvals
      * @return Cluster|array|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function msetnx(array $kvals): Cluster|array|bool {}
 
     /**
      * Marks the start of a transaction block. Subsequent commands will be queued for atomic execution using EXEC.
@@ -1299,9 +1505,9 @@
      *
      * @param  int  $mode
      * @return Cluster|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function multi(int $mode = Relay::MULTI): Cluster|bool {}
 
     /**
      * This is a container command for object introspection commands.
@@ -1309,18 +1515,18 @@
      * @param  string  $op
      * @param  mixed  $key
      * @return mixed
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function object(string $op, mixed $key): mixed {}
 
     /**
      * Registers a new `flushed` event listener.
      *
      * @param  callable  $callback
      * @return bool
      */
-    #[\Relay\Attributes\Local]
+    #[Attributes\Local]
     public function onFlushed(?callable $callback): bool {}
 
     /**
      * Registers a new `invalidated` event listener.
@@ -1328,18 +1534,18 @@
      * @param  callable  $callback
      * @param  string|null  $pattern
      * @return bool
      */
-    #[\Relay\Attributes\Local]
+    #[Attributes\Local]
     public function onInvalidated(?callable $callback, ?string $pattern = null): bool {}
 
     /**
      * Remove the existing timeout on key, turning the key from volatile to persistent.
      *
      * @param  mixed  $key
      * @return Cluster|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function persist(mixed $key): Cluster|bool {}
 
     /**
      * Set a key's time to live in milliseconds.
@@ -1347,9 +1553,9 @@
      * @param  mixed  $key
      * @param  int  $milliseconds
      * @return Cluster|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function pexpire(mixed $key, int $milliseconds): Cluster|bool {}
 
     /**
      * Set the expiration for a key as a UNIX timestamp specified in milliseconds.
@@ -1357,9 +1563,9 @@
      * @param  mixed  $key
      * @param  int  $timestamp_ms
      * @return Cluster|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function pexpireat(mixed $key, int $timestamp_ms): Cluster|bool {}
 
     /**
      * Semantic the same as EXPIRETIME, but returns the absolute Unix expiration
@@ -1367,9 +1573,9 @@
      *
      * @param  mixed  $key
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function pexpiretime(mixed $key): Cluster|int|false {}
 
     /**
      * Adds the specified elements to the specified HyperLogLog.
@@ -1377,18 +1583,18 @@
      * @param  string  $key
      * @param  array  $elements
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function pfadd(mixed $key, array $elements): Cluster|int|false {}
 
     /**
      * Return the approximated cardinality of the set(s) observed by the HyperLogLog at key(s).
      *
      * @param  string  $key
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function pfcount(mixed $key): Cluster|int|false {}
 
     /**
      * Merge given HyperLogLogs into a single one.
@@ -1396,9 +1602,9 @@
      * @param  string  $dstkey
      * @param  array  $srckeys
      * @return Cluster|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function pfmerge(string $dstkey, array $srckeys): Cluster|bool {}
 
     /**
      * Returns PONG if no argument is provided, otherwise return a copy of the argument as a bulk.
@@ -1406,9 +1612,9 @@
      * @param  array|string  $key_or_address
      * @param  string|null  $message
      * @return Cluster|bool|string
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function ping(array|string $key_or_address, string|null $message = null): Cluster|bool|string {}
 
     /**
      * Set key to hold the string value and set key to timeout after a given number of milliseconds.
@@ -1417,9 +1623,9 @@
      * @param  int  $milliseconds
      * @param  mixed  $value
      * @return Cluster|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Deprecated]
     public function psetex(mixed $key, int $milliseconds, mixed $value): Cluster|bool {}
 
     /**
      * Subscribes to the given patterns.
@@ -1427,18 +1633,18 @@
      * @param  array  $patterns
      * @param  callable  $callback
      * @return bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function psubscribe(array $patterns, callable $callback): bool {}
 
     /**
      * Returns the remaining time to live of a key that has a timeout in milliseconds.
      *
      * @param  mixed  $key
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function pttl(mixed $key): Cluster|int|false {}
 
     /**
      * Posts a message to the given channel.
@@ -1446,9 +1652,9 @@
      * @param  string  $channel
      * @param  string  $message
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function publish(string $channel, string $message): Cluster|int|false {}
 
     /**
      * A container command for Pub/Sub introspection commands.
@@ -1457,27 +1663,27 @@
      * @param  string  $operation
      * @param  mixed  $args,...
      * @return mixed
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function pubsub(array|string $key_or_address, string $operation, mixed ...$args): mixed {}
 
     /**
      * Unsubscribes from the given patterns, or from all of them if none is given.
      *
      * @param  array  $patterns
      * @return bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function punsubscribe(array $patterns = []): bool {}
 
     /**
      * Returns a random key from Redis.
      *
      * @param  array|string  $key_or_address
      * @return Cluster|bool|string
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function randomkey(array|string $key_or_address): Cluster|bool|string {}
 
     /**
      * Execute any command against Redis, without applying
@@ -1487,9 +1693,9 @@
      * @param  string  $cmd
      * @param  mixed  $args,...
      * @return mixed
      */
-    #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached]
     public function rawCommand(array|string $key_or_address, string $cmd, mixed ...$args): mixed {}
 
     /**
      * Renames key.
@@ -1497,9 +1703,9 @@
      * @param  mixed  $key
      * @param  mixed  $newkey
      * @return Cluster|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function rename(mixed $key, mixed $newkey): Cluster|bool {}
 
     /**
      * Renames key if the new key does not yet exist.
@@ -1507,9 +1713,9 @@
      * @param  mixed  $key
      * @param  mixed  $newkey
      * @return Cluster|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function renamenx(mixed $key, mixed $newkey): Cluster|bool {}
 
     /**
      * Create a key associated with a value that is obtained by deserializing the provided serialized value.
@@ -1519,18 +1725,18 @@
      * @param  string  $value
      * @param  array|null  $options
      * @return Cluster|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function restore(mixed $key, int $ttl, string $value, array|null $options = null): Cluster|bool {}
 
     /**
      * Returns the role of the instance in the context of replication.
      *
      * @param  array|string  $key_or_address
      * @return Cluster|array|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function role(array|string $key_or_address): Cluster|array|false {}
 
     /**
      * Removes and returns the last elements of the list stored at key.
@@ -1538,9 +1744,9 @@
      * @param  mixed  $key
      * @param  int  $count
      * @return mixed
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function rpop(mixed $key, int $count = 1): mixed {}
 
     /**
      * Atomically returns and removes the last element (tail) of the list stored at source,
@@ -1549,9 +1755,9 @@
      * @param  mixed  $srckey
      * @param  mixed  $dstkey
      * @return mixed
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Deprecated]
     public function rpoplpush(mixed $srckey, mixed $dstkey): mixed {}
 
     /**
      * Insert all the specified values at the tail of the list stored at key.
@@ -1560,9 +1766,9 @@
      * @param  mixed  $member
      * @param  mixed  $members,...
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function rpush(mixed $key, mixed $member, mixed ...$members): Cluster|int|false {}
 
     /**
      * Inserts specified values at the tail of the list stored at key,
@@ -1572,9 +1778,9 @@
      * @param  mixed  $member
      * @param  mixed  $members,...
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function rpushx(mixed $key, mixed $member, mixed ...$members): Cluster|int|false {}
 
     /**
      * Add the specified members to the set stored at `$key`.
@@ -1583,40 +1789,52 @@
      * @param  mixed  $member
      * @param  mixed  $members,...
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function sadd(mixed $key, mixed $member, mixed ...$members): Cluster|int|false {}
 
     /**
      * Synchronously save the dataset to disk.
      *
      * @param  array|string  $key_or_address
      * @return Cluster|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function save(array|string $key_or_address): Cluster|bool {}
 
     /**
      * Scan the keyspace for matching keys.
      *
-     * @param  mixed  $iterator
+     * @param  mixed  &$iterator
+     * @param-out mixed $iterator
      * @param  array|string  $key_or_address
      * @param  mixed  $match
      * @param  int  $count
      * @param  string|null  $type
      * @return array|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function scan(mixed &$iterator, array|string $key_or_address, mixed $match = null, int $count = 0, string|null $type = null): array|false {}
 
     /**
+     * Scan the keyspace for matching keys on each master node.
+     *
+     * @param  mixed  $match
+     * @param  int  $count
+     * @param  string|null  $type
+     *
+     * @return \Generator|false
+     */
+    public function fullscan(mixed $match = null, int $count = 0, string|null $type = null): \Generator|false {}
+
+    /**
      * Returns the set cardinality (number of elements) of the set stored at `$key`.
      *
      * @param  mixed  $key
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached]
     public function scard(mixed $key): Cluster|int|false {}
 
     /**
      * Execute a script management command.
@@ -1625,9 +1843,9 @@
      * @param  string  $operation
      * @param  string  $args,...
      * @return mixed
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function script(array|string $key_or_address, string $operation, string ...$args): mixed {}
 
     /**
      * Returns the members of the set resulting from the difference between the first set and all the successive sets.
@@ -1635,9 +1853,9 @@
      * @param  mixed  $key
      * @param  mixed  $other_keys,...
      * @return Cluster|array|false
      */
-    #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached]
     public function sdiff(mixed $key, mixed ...$other_keys): Cluster|array|false {}
 
     /**
      * This command is equal to SDIFF, but instead of returning the resulting set, it is stored in destination.
@@ -1646,9 +1864,9 @@
      * @param  mixed  $key
      * @param  mixed  $other_keys,...
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function sdiffstore(mixed $key, mixed ...$other_keys): Cluster|int|false {}
 
     /**
      * Set key to hold the string value. If key already holds
@@ -1658,9 +1876,9 @@
      * @param  mixed  $value
      * @param  mixed  $options
      * @return Cluster|string|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function set(mixed $key, mixed $value, mixed $options = null): Cluster|string|bool {}
 
     /**
      * Sets a client option.
@@ -1691,9 +1909,9 @@
      * @param  int  $option
      * @param  mixed  $value
      * @return bool
      */
-    #[\Relay\Attributes\Local]
+    #[Attributes\Local]
     public function setOption(int $option, mixed $value): bool {}
 
     /**
      * Sets or clears the bit at offset in the string value stored at key.
@@ -1702,9 +1920,9 @@
      * @param  int  $pos
      * @param  int  $value
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function setbit(mixed $key, int $pos, int $value): Cluster|int|false {}
 
     /**
      * Set key to hold the string value and set key to timeout after a given number of seconds.
@@ -1713,9 +1931,9 @@
      * @param  int  $seconds
      * @param  mixed  $value
      * @return Cluster|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Deprecated]
     public function setex(mixed $key, int $seconds, mixed $value): Cluster|bool {}
 
     /**
      * Set key to hold string value if key does not exist. In that case, it is equal to SET.
@@ -1725,9 +1943,9 @@
      * @param  mixed  $key
      * @param  mixed  $value
      * @return Cluster|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Deprecated]
     public function setnx(mixed $key, mixed $value): Cluster|bool {}
 
     /**
      * Overwrites part of the string stored at key, starting at
@@ -1737,9 +1955,9 @@
      * @param  int  $start
      * @param  mixed  $value
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function setrange(mixed $key, int $start, mixed $value): Cluster|int|false {}
 
     /**
      * Returns the members of the set resulting from the intersection of all the given sets.
@@ -1747,9 +1965,9 @@
      * @param  mixed  $key
      * @param  mixed  $other_keys,...
      * @return Cluster|array|false
      */
-    #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached]
     public function sinter(mixed $key, mixed ...$other_keys): Cluster|array|false {}
 
     /**
      * Intersect multiple sets and return the cardinality of the result.
@@ -1757,9 +1975,9 @@
      * @param  array  $keys
      * @param  int  $limit
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached]
     public function sintercard(array $keys, int $limit = -1): Cluster|int|false {}
 
     /**
      * This command is equal to SINTER, but instead of returning the resulting set, it is stored in destination.
@@ -1768,9 +1986,9 @@
      * @param  mixed  $key
      * @param  mixed  $other_keys,...
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function sinterstore(mixed $key, mixed ...$other_keys): Cluster|int|false {}
 
     /**
      * Returns if `$member` is a member of the set stored at `$key`.
@@ -1778,9 +1996,9 @@
      * @param  mixed  $key
      * @param  mixed  $member
      * @return Cluster|bool
      */
-    #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached]
     public function sismember(mixed $key, mixed $member): Cluster|bool {}
 
     /**
      * Interact with the Redis slowlog.
@@ -1789,18 +2007,18 @@
      * @param  string  $operation
      * @param  mixed  $args,...
      * @return Cluster|array|int|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function slowlog(array|string $key_or_address, string $operation, mixed ...$args): Cluster|array|int|bool {}
 
     /**
      * Returns all the members of the set value stored at `$key`.
      *
      * @param  mixed  $key
      * @return Cluster|array|false
      */
-    #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached]
     public function smembers(mixed $key): Cluster|array|false {}
 
     /**
      * Returns whether each member is a member of the set stored at `$key`.
@@ -1808,9 +2026,9 @@
      * @param  mixed  $key
      * @param  mixed  $members,...
      * @return Cluster|array|false
      */
-    #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached]
     public function smismember(mixed $key, mixed ...$members): Cluster|array|false {}
 
     /**
      * Move member from the set at source to the set at destination.
@@ -1819,9 +2037,9 @@
      * @param  mixed  $dstkey
      * @param  mixed  $member
      * @return Cluster|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function smove(mixed $srckey, mixed $dstkey, mixed $member): Cluster|bool {}
 
     /**
      * Sort the elements in a list, set or sorted set.
@@ -1829,9 +2047,9 @@
      * @param  mixed  $key
      * @param  array  $options
      * @return Cluster|array|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function sort(mixed $key, array $options = []): Cluster|array|int|false {}
 
     /**
      * Sort the elements in a list, set or sorted set. Read-only variant of SORT.
@@ -1839,9 +2057,9 @@
      * @param  mixed  $key
      * @param  array  $options
      * @return Cluster|array|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function sort_ro(mixed $key, array $options = []): Cluster|array|int|false {}
 
     /**
      * Removes and returns one or more random members from the set value store at `$key`.
@@ -1849,9 +2067,9 @@
      * @param  mixed  $key
      * @param  int  $count
      * @return mixed
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function spop(mixed $key, int $count = 1): mixed {}
 
     /**
      * Returns one or multiple random members from a set.
@@ -1859,9 +2077,9 @@
      * @param  mixed  $key
      * @param  int  $count
      * @return mixed
      */
-    #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached]
     public function srandmember(mixed $key, int $count = 1): mixed {}
 
     /**
      * Remove the specified members from the set stored at `$key`.
@@ -1870,21 +2088,22 @@
      * @param  mixed  $member
      * @param  mixed  $members,...
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function srem(mixed $key, mixed $member, mixed ...$members): Cluster|int|false {}
 
     /**
      * Iterates elements of Sets types.
      *
      * @param  mixed  $key
-     * @param  mixed  $iterator
+     * @param  mixed  &$iterator
+     * @param-out mixed $iterator
      * @param  mixed  $match
      * @param  int  $count
      * @return array|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function sscan(mixed $key, mixed &$iterator, mixed $match = null, int $count = 0): array|false {}
 
     /**
      * Subscribes to the specified shard channels.
@@ -1892,27 +2111,27 @@
      * @param  array  $channels
      * @param  callable  $callback
      * @return bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function ssubscribe(array $channels, callable $callback): bool {}
 
     /**
      * Returns statistics about Relay.
      *
      * @see \Relay\Relay::stats()
      * @return array
      */
-    #[\Relay\Attributes\Local]
+    #[Attributes\Local]
     public static function stats(): array {}
 
     /**
      * Returns the length of the string value stored at `$key`.
      *
      * @param  mixed  $key
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached]
     public function strlen(mixed $key): Cluster|int|false {}
 
     /**
      * Subscribes to the specified channels.
@@ -1920,9 +2139,9 @@
      * @param  array  $channels
      * @param  callable  $callback
      * @return bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function subscribe(array $channels, callable $callback): bool {}
 
     /**
      * Returns the members of the set resulting from the union of all the given sets.
@@ -1930,9 +2149,9 @@
      * @param  mixed  $key
      * @param  mixed  $other_keys,...
      * @return Cluster|array|false
      */
-    #[\Relay\Attributes\RedisCommand, \Relay\Attributes\Cached]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached]
     public function sunion(mixed $key, mixed ...$other_keys): Cluster|array|false {}
 
     /**
      * This command is equal to SUNION, but instead of returning the resulting set, it is stored in destination.
@@ -1941,27 +2160,27 @@
      * @param  mixed  $key
      * @param  mixed  $other_keys,...
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function sunionstore(mixed $key, mixed ...$other_keys): Cluster|int|false {}
 
     /**
      * Unsubscribes from the given shard channels, or from all of them if none is given.
      *
      * @param  array  $channels
      * @return bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function sunsubscribe(array $channels = []): bool {}
 
     /**
      * Returns the current time from Redis.
      *
      * @param  array|string  $key_or_address
      * @return Cluster|array|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function time(array|string $key_or_address): Cluster|array|false {}
 
     /**
      * Alters the last access time of a key(s).
@@ -1969,18 +2188,18 @@
      * @param  array|string  $key_or_array
      * @param  mixed  $more_keys,...
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function touch(array|string $key_or_array, mixed ...$more_keys): Cluster|int|false {}
 
     /**
      * Returns the remaining time to live of a key that has a timeout in seconds.
      *
      * @param  mixed  $key
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function ttl(mixed $key): Cluster|int|false {}
 
     /**
      * Returns the type of a given key.
@@ -1991,46 +2210,182 @@
      *
      * @param  mixed  $key
      * @return Cluster|int|string|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function type(mixed $key): Cluster|int|string|bool {}
 
     /**
      * Removes the specified keys without blocking Redis.
      *
      * @param  mixed  $keys,...
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function unlink(mixed ...$keys): Cluster|int|false {}
 
     /**
      * Unsubscribes from the given channels, or from all of them if none is given.
      *
      * @param  array  $channels
      * @return bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function unsubscribe(array $channels = []): bool {}
 
     /**
      * Flushes all the previously watched keys for a transaction.
      * If you call EXEC or DISCARD, there's no need to manually call UNWATCH.
      *
      * @return Cluster|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function unwatch(): Cluster|bool {}
 
     /**
+     * Add an element to a vector set.
+     *
+     * @param  mixed  $key
+     * @param  array  $values
+     * @param  mixed  $element
+     * @param  array|null  $options
+     * @return Cluster|int|false
+     */
+    #[Attributes\RedisCommand]
+    public function vadd(mixed $key, array $values, mixed $element, ?array $options = null): Cluster|int|false {}
+
+    /**
+     * Return the cardinality (number of elements) in a vector set.
+     *
+     * @param  mixed  $key
+     * @return Cluster|int|false
+     */
+    #[Attributes\RedisCommand]
+    public function vcard(mixed $key): Cluster|int|false {}
+
+    /**
+     * Return the dimensionality of vectors in a vector set.
+     *
+     * @param  mixed  $key
+     * @return Cluster|int|false
+     */
+    #[Attributes\RedisCommand]
+    public function vdim(mixed $key): Cluster|int|false {}
+
+    /**
+     * Get the embedding for a given vector set member.
+     *
+     * @param  mixed  $key
+     * @param  mixed  $element
+     * @param  bool  $raw
+     * @return Cluster|array|false
+     */
+    #[Attributes\RedisCommand]
+    public function vemb(mixed $key, mixed $element, bool $raw = false): Cluster|array|false {}
+
+    /**
+     * Get any attributes for a given vector set member.
+     *
+     * @param  mixed  $key
+     * @param  mixed  $element
+     * @param  bool  $raw
+     * @return Cluster|array|string|false
+     */
+    #[Attributes\RedisCommand]
+    public function vgetattr(mixed $key, mixed $element, bool $raw = false): Cluster|array|string|false {}
+
+    /**
+     * Return metadata about a vector set.
+     *
+     * @param  mixed  $key
+     * @return Cluster|array|false
+     */
+    #[Attributes\RedisCommand]
+    public function vinfo(mixed $key): Cluster|array|false {}
+
+    /**
+     * Returns whether or not the element is a member of a vectorset.
+     *
+     * @param  mixed  $key
+     * @param  mixed  $element
+     * @return Cluster|bool
+     */
+    #[Attributes\RedisCommand]
+    public function vismember(mixed $key, mixed $element): Cluster|bool {}
+
+    /**
+     * Get neighbors for a given vector element optionally withscores.
+     *
+     * @param  mixed  $key
+     * @param  mixed  $element
+     * @param  bool  $withscores
+     * @return Cluster|array|false
+     */
+    #[Attributes\RedisCommand]
+    public function vlinks(mixed $key, mixed $element, bool $withscores): Cluster|array|false {}
+
+    /**
+     * Get one or more random members from a vector set.
+     *
+     * @param  mixed  $key
+     * @param  int  $count
+     * @return Cluster|array|string|false
+     */
+    #[Attributes\RedisCommand]
+    public function vrandmember(mixed $key, int $count = 0): Cluster|array|string|false {}
+
+    /**
+     * Get a range of entries from a STREAM ke in reverse chronological order.
+     *
+     * @param  string  $key
+     * @param  string  $end
+     * @param  string  $start
+     * @param  int  $count
+     * @return Cluster|array|bool
+     */
+    #[Attributes\RedisCommand]
+    public function vrange(string $key, string $end, string $start, int $count = -1): Cluster|array|bool {}
+
+    /**
+     * Remove an element from a vector set.
+     *
+     * @param  mixed  $key
+     * @param  mixed  $element
+     * @return Cluster|int|false
+     */
+    #[Attributes\RedisCommand]
+    public function vrem(mixed $key, mixed $element): Cluster|int|false {}
+
+    /**
+     * Set attributes for a given vector set member.
+     *
+     * @param  mixed  $key
+     * @param  mixed  $element
+     * @param  array|string  $attributes
+     * @return Cluster|int|false
+     */
+    #[Attributes\RedisCommand]
+    public function vsetattr(mixed $key, mixed $element, array|string $attributes): Cluster|int|false {}
+
+    /**
+     * Do a similarity search on encodings or an element of a vector set.
+     *
+     * @param  mixed  $key
+     * @param  mixed  $member
+     * @param  array|null  $options
+     * @return Cluster|array|false
+     */
+    #[Attributes\RedisCommand]
+    public function vsim(mixed $key, mixed $member, array|null $options = null): Cluster|array|false {}
+
+    /**
      * Marks the given keys to be watched for conditional execution of a transaction.
      *
      * @param  mixed  $key
      * @param  mixed  $other_keys,...
      * @return Cluster|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function watch(mixed $key, mixed ...$other_keys): Cluster|bool {}
 
     /**
      * Acknowledge one or more IDs as having been processed by the consumer group.
@@ -2039,12 +2394,24 @@
      * @param  string  $group
      * @param  array  $ids
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function xack(mixed $key, string $group, array $ids): Cluster|int|false {}
 
     /**
+     * Awknowledge and delete one or more IDs in a stream.
+     *
+     * @param  string  $key
+     * @param  string  $group
+     * @param  array  $ids
+     * @param  string|null  $mode
+     * @return Cluster|array|false
+     */
+    #[Attributes\RedisCommand]
+    public function xackdel(string $key, string $group, array $ids, ?string $mode = null): Cluster|array|false {}
+
+    /**
      * Append a message to a stream.
      *
      * @param  string  $key
      * @param  string  $id
@@ -2052,13 +2419,13 @@
      * @param  bool  $approx
      * @param  bool  $nomkstream
      * @return Cluster|string|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function xadd(mixed $key, string $id, array $values, int $maxlen = 0, bool $approx = false, bool $nomkstream = false): Cluster|string|false {}
 
     /**
-     * Automatically take ownership of stream message(s) by metrics
+     * Automatically take ownership of stream message(s) by metrics.
      *
      * @param  string  $key
      * @param  string  $group
      * @param  string  $consumer
@@ -2067,9 +2434,9 @@
      * @param  int  $count
      * @param  bool  $justid
      * @return Cluster|array|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function xautoclaim(mixed $key, string $group, string $consumer, int $min_idle, string $start, int $count = -1, bool $justid = false): Cluster|bool|array {}
 
     /**
      * Claim ownership of stream message(s).
@@ -2081,9 +2448,9 @@
      * @param  array  $ids
      * @param  array  $options
      * @return Cluster|array|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function xclaim(mixed $key, string $group, string $consumer, int $min_idle, array $ids, array $options): Cluster|array|bool {}
 
     /**
      * Remove one or more specific IDs from a stream.
@@ -2091,23 +2458,34 @@
      * @param  string  $key
      * @param  array  $ids
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function xdel(mixed $key, array $ids): Cluster|int|false {}
 
     /**
-     * Perform utility operations having to do with consumer groups
+     * Remove one or more IDs from a stream with optional mode argument.
      *
+     * @param  string  $key
+     * @param  array  $ids
+     * @param  string|null  $mode
+     * @return Cluster|array|false
+     */
+    #[Attributes\RedisCommand]
+    public function xdelex(string $key, array $ids, ?string $mode = null): Cluster|array|false {}
+
+    /**
+     * Perform utility operations having to do with consumer groups.
+     *
      * @param  string  $operation
      * @param  mixed  $key
      * @param  string  $group
      * @param  string  $id_or_consumer
      * @param  bool  $mkstream
      * @param  int  $entries_read
      * @return mixed
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function xgroup(string $operation, mixed $key = null, string $group = null, string $id_or_consumer = null, bool $mkstream = false, int $entries_read = -2): mixed {}
 
     /**
      * Retrieve information about a stream key.
@@ -2117,18 +2495,18 @@
      * @param  string|null  $arg2
      * @param  int  $count
      * @return mixed
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function xinfo(string $operation, string|null $arg1 = null, string|null $arg2 = null, int $count = -1): mixed {}
 
     /**
      * Get the length of a stream.
      *
      * @param  mixed  $key
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function xlen(mixed $key): Cluster|int|false {}
 
     /**
      * Query pending entries in a stream.
@@ -2141,9 +2519,9 @@
      * @param  string|null  $consumer
      * @param  int  $idle
      * @return Cluster|array|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function xpending(mixed $key, string $group, string|null $start = null, string|null $end = null, int $count = -1, string|null $consumer = null, int $idle = 0): Cluster|array|false {}
 
     /**
      * Lists elements in a stream.
@@ -2153,9 +2531,9 @@
      * @param  string  $end
      * @param  int  $count = -1
      * @return Cluster|array|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function xrange(mixed $key, string $start, string $end, int $count = -1): Cluster|array|false {}
 
     /**
      * Read messages from a stream.
@@ -2164,9 +2542,9 @@
      * @param  int  $count
      * @param  int  $block
      * @return Cluster|array|bool|null
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function xread(array $streams, int $count = -1, int $block = -1): Cluster|array|bool|null {}
 
     /**
      * Read messages from a stream using a consumer group.
@@ -2177,21 +2555,21 @@
      * @param  int  $count
      * @param  int  $block
      * @return Cluster|array|bool|null
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function xreadgroup(mixed $key, string $consumer, array $streams, int $count = 1, int $block = 1): Cluster|array|bool|null {}
 
     /**
-     * Get a range of entries from a STREAM ke in reverse chronological order.
+     * Get a lexicographical range of elements from a vector set.
      *
      * @param  mixed  $key
      * @param  string  $end
      * @param  string  $start
      * @param  int  $count
      * @return Cluster|array|bool
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand]
     public function xrevrange(mixed $key, string $end, string $start, int $count = -1): Cluster|array|bool {}
 
     /**
      * Truncate a STREAM key in various ways.
@@ -2202,9 +2580,9 @@
      * @param  bool  $minid
      * @param  int  $limit
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function xtrim(mixed $key, string $threshold, bool $approx = false, bool $minid = false, int $limit = -1): Cluster|int|false {}
 
     /**
      * Adds all the specified members with the specified scores to the sorted set stored at key.
@@ -2212,18 +2590,18 @@
      * @param  mixed  $key
      * @param  mixed  $args,...
      * @return mixed
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function zadd(mixed $key, mixed ...$args): mixed {}
 
     /**
      * Returns the sorted set cardinality (number of elements) of the sorted set stored at key.
      *
      * @param  mixed  $key
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function zcard(mixed $key): Cluster|int|false {}
 
     /**
      * Returns the number of elements in the sorted set at key with a score between min and max.
@@ -2232,9 +2610,9 @@
      * @param  mixed  $min
      * @param  mixed  $max
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function zcount(mixed $key, mixed $min, mixed $max): Cluster|int|false {}
 
     /**
      * This command is similar to ZDIFFSTORE, but instead of storing the
@@ -2243,9 +2621,9 @@
      * @param  array  $keys
      * @param  array|null  $options
      * @return Cluster|array|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function zdiff(array $keys, array|null $options = null): Cluster|array|false {}
 
     /**
      * Computes the difference between the first and all successive
@@ -2254,9 +2632,9 @@
      * @param  mixed  $dstkey
      * @param  array  $keys
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function zdiffstore(mixed $dstkey, array $keys): Cluster|int|false {}
 
     /**
      * Increments the score of member in the sorted set stored at key by increment.
@@ -2265,9 +2643,9 @@
      * @param  float  $score
      * @param  mixed  $member
      * @return Cluster|float|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function zincrby(mixed $key, float $score, mixed $member): Cluster|float|false {}
 
     /**
      * This command is similar to ZINTERSTORE, but instead of storing
@@ -2277,9 +2655,9 @@
      * @param  array|null  $weights
      * @param  mixed  $options
      * @return Cluster|array|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function zinter(array $keys, array|null $weights = null, mixed $options = null): Cluster|array|false {}
 
     /**
      * Intersect multiple sorted sets and return the cardinality of the result.
@@ -2287,9 +2665,9 @@
      * @param  array  $keys
      * @param  int  $limit
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function zintercard(array $keys, int $limit = -1): Cluster|int|false {}
 
     /**
      * Computes the intersection of numkeys sorted sets given by the
@@ -2300,9 +2678,9 @@
      * @param  array|null  $weights
      * @param  mixed  $options
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function zinterstore(mixed $dstkey, array $keys, array|null $weights = null, mixed $options = null): Cluster|int|false {}
 
     /**
      * When all the elements in a sorted set are inserted with the same score,
@@ -2313,9 +2691,9 @@
      * @param  mixed  $min
      * @param  mixed  $max
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function zlexcount(mixed $key, mixed $min, mixed $max): Cluster|int|false {}
 
     /**
      * Pops one or more elements, that are member-score pairs, from the
@@ -2325,9 +2703,9 @@
      * @param  string  $from
      * @param  int  $count
      * @return Cluster|array|null|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function zmpop(array $keys, string $from, int $count = 1): Cluster|array|null|false {}
 
     /**
      * Returns the scores associated with the specified members in the sorted set stored at key.
@@ -2335,9 +2713,9 @@
      * @param  mixed  $key
      * @param  mixed  $members,...
      * @return Cluster|array|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function zmscore(mixed $key, mixed ...$members): Cluster|array|false {}
 
     /**
      * Removes and returns up to count members with the highest
@@ -2346,9 +2724,9 @@
      * @param  mixed  $key
      * @param  int  $count
      * @return Cluster|array|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function zpopmax(mixed $key, int $count = 1): Cluster|array|false {}
 
     /**
      * Removes and returns up to count members with the lowest
@@ -2357,9 +2735,9 @@
      * @param  mixed  $key
      * @param  int  $count
      * @return Cluster|array|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function zpopmin(mixed $key, int $count = 1): Cluster|array|false {}
 
     /**
      * When called with just the key argument, return a random element from the sorted set value stored at key.
@@ -2368,9 +2746,9 @@
      * @param  mixed  $key
      * @param  array|null  $options
      * @return mixed
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function zrandmember(mixed $key, array|null $options = null): mixed {}
 
     /**
      * Returns the specified range of elements in the sorted set stored at key.
@@ -2380,9 +2758,9 @@
      * @param  string  $end
      * @param  mixed  $options
      * @return Cluster|array|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached]
     public function zrange(mixed $key, string $start, string $end, mixed $options = null): Cluster|array|false {}
 
     /**
      * When all the elements in a sorted set are inserted with the same score,
@@ -2395,9 +2773,9 @@
      * @param  int  $offset
      * @param  int  $count
      * @return Cluster|array|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Deprecated]
     public function zrangebylex(mixed $key, mixed $min, mixed $max, int $offset = -1, int $count = -1): Cluster|array|false {}
 
     /**
      * Returns all the elements in the sorted set at key with a score between
@@ -2408,9 +2786,9 @@
      * @param  mixed  $end
      * @param  mixed  $options
      * @return Cluster|array|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached, Attributes\Deprecated]
     public function zrangebyscore(mixed $key, mixed $start, mixed $end, mixed $options = null): Cluster|array|false {}
 
     /**
      * Returns all the elements in the sorted set at key with a score between
@@ -2422,9 +2800,9 @@
      * @param  mixed  $end
      * @param  mixed  $options
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function zrangestore(mixed $dstkey, mixed $srckey, mixed $start, mixed $end, mixed $options = null): Cluster|int|false {}
 
     /**
      * Returns the rank of member in the sorted set stored at key, with the scores
@@ -2435,9 +2813,9 @@
      * @param  mixed  $rank
      * @param  bool  $withscore
      * @return Cluster|array|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function zrank(mixed $key, mixed $rank, bool $withscore = false): Cluster|array|int|false {}
 
     /**
      * Removes the specified members from the sorted set stored at key.
@@ -2446,9 +2824,9 @@
      * @param  mixed  $key
      * @param  mixed  $args,...
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function zrem(mixed $key, mixed ...$args): Cluster|int|false {}
 
     /**
      * When all the elements in a sorted set are inserted with the same score,
@@ -2460,9 +2838,9 @@
      * @param  mixed  $min
      * @param  mixed  $max
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function zremrangebylex(mixed $key, mixed $min, mixed $max): Cluster|int|false {}
 
     /**
      * Removes all elements in the sorted set stored at key with rank between
@@ -2473,9 +2851,9 @@
      * @param  int  $start
      * @param  int  $end
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function zremrangebyrank(mixed $key, int $start, int $end): Cluster|int|false {}
 
     /**
      * Removes all elements in the sorted set stored at key with
@@ -2485,9 +2863,9 @@
      * @param  mixed  $min
      * @param  mixed  $max
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function zremrangebyscore(mixed $key, mixed $min, mixed $max): Cluster|int|false {}
 
     /**
      * Returns the specified range of elements in the sorted set stored at key.
@@ -2497,9 +2875,9 @@
      * @param  int  $end
      * @param  mixed  $options
      * @return Cluster|array|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached, Attributes\Deprecated]
     public function zrevrange(mixed $key, int $start, int $end, mixed $options = null): Cluster|array|false {}
 
     /**
      * When all the elements in a sorted set are inserted with the same score,
@@ -2512,9 +2890,9 @@
      * @param  int  $offset
      * @param  int  $count
      * @return Cluster|array|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Deprecated]
     public function zrevrangebylex(mixed $key, mixed $max, mixed $min, int $offset = -1, int $count = -1): Cluster|array|false {}
 
     /**
      * Returns all the elements in the sorted set at key with a score between
@@ -2525,9 +2903,9 @@
      * @param  mixed  $end
      * @param  mixed  $options
      * @return Cluster|array|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand, Attributes\Cached, Attributes\Deprecated]
     public function zrevrangebyscore(mixed $key, mixed $start, mixed $end, mixed $options = null): Cluster|array|false {}
 
     /**
      * Returns the rank of member in the sorted set stored at key, with the scores
@@ -2538,21 +2916,22 @@
      * @param  mixed  $rank
      * @param  bool  $withscore
      * @return Cluster|array|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function zrevrank(mixed $key, mixed $rank, bool $withscore = false): Cluster|array|int|false {}
 
     /**
      * Iterates elements of Sorted Set types and their associated scores.
      *
      * @param  mixed  $key
-     * @param  mixed  $iterator
+     * @param  mixed  &$iterator
+     * @param-out mixed $iterator
      * @param  mixed  $match
      * @param  int  $count
      * @return array|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function zscan(mixed $key, mixed &$iterator, mixed $match = null, int $count = 0): array|false {}
 
     /**
      * Returns the score of member in the sorted set at key.
@@ -2560,9 +2939,9 @@
      * @param  mixed  $key
      * @param  mixed  $member
      * @return Cluster|float|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function zscore(mixed $key, mixed $member): Cluster|float|false {}
 
     /**
      * This command is similar to ZUNIONSTORE, but instead of storing
@@ -2572,9 +2951,9 @@
      * @param  array|null  $weights
      * @param  mixed  $options
      * @return Cluster|array|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function zunion(array $keys, array|null $weights = null, mixed $options = null): Cluster|array|false {}
 
     /**
      * Computes the union of numkeys sorted sets given by the
@@ -2585,7 +2964,14 @@
      * @param  array|null  $weights
      * @param  mixed  $options
      * @return Cluster|int|false
      */
-    #[\Relay\Attributes\RedisCommand]
+    #[Attributes\RedisCommand, Attributes\ValkeyCommand]
     public function zunionstore(mixed $dstkey, array $keys, array|null $weights = null, mixed $options = null): Cluster|int|false {}
 }
+
+namespace Relay\Cluster;
+
+/**
+ * Cluster `fullscan()` generator class.
+ */
+final class FullscanGenerator extends \Generator {}