Todos los productos
Search
Centro de documentos

Tair (Redis® OSS-Compatible):exHash

Última actualización: Sep 03, 2026

TairHash (exHash) es una estructura de datos hash que permite establecer un tiempo de caducidad y una versión para cada campo. Esta capacidad aumenta la flexibilidad de la estructura de datos hash y simplifica el desarrollo en diversos escenarios.

Descripción general

TairHash amplía el hash estándar de Redis con dos capacidades de las que carece el hash nativo: caducidad por campo y control de versiones por campo. Es posible establecer un TTL en campos individuales sin afectar al resto de la clave, así como utilizar números de versión para evitar conflictos en escrituras simultáneas.

TairHash emplea un algoritmo de caducidad activa que revisa y elimina proactivamente los campos caducados sin afectar notablemente el tiempo de respuesta. También admite la caducidad pasiva, la cual elimina los campos caducados al momento de acceder a ellos.

Funciones principales

  • Establecer un tiempo de caducidad y una versión para cada campo.

  • Utilizar directivas de caducidad activa y pasiva para los campos.

  • Emplear una sintaxis similar al tipo de datos hash nativo de Redis.

Este módulo es de código abierto. Para obtener más información, consulte TairHash.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

Mantenga su instancia en la versión menor más reciente para obtener funciones adicionales y mayor estabilidad. Consulte Minor version update . En instancias con arquitectura de clúster o de división de lectura/escritura, actualice también los nodos proxy; de lo contrario, es posible que algunos comandos no se reconozcan.

Precauciones

Los comandos operan sobre datos TairHash dentro de una instancia de Tair.

Comandos

A continuación se listan todos los comandos de TairHash, agrupados por tipo de operación.

Comandos de escritura

Comando

Sintaxis

Descripción

EXHSET

`EXHSET key field value [EX time] [EXAT time] [PX time] [PXAT time] [NX

XX] [VER

ABS version] [KEEPTTL]`

Agrega un campo a la clave TairHash especificada. Crea la clave si no existe. Sobrescribe el valor del campo si este ya existe.

EXHMSET

EXHMSET key field value [field value ...]

Agrega varios campos a la clave TairHash especificada. Crea la clave si no existe. Sobrescribe los valores de los campos existentes.

EXHINCRBY

`EXHINCRBY key field num [EX time] [EXAT time] [PX time] [PXAT time] [VER

ABS version] [MIN minval] [MAX maxval] [KEEPTTL]`

Incrementa el valor entero de un campo en num. Crea la clave o el campo si no existen (el campo comienza en 0 antes del incremento).

EXHINCRBYFLOAT

`EXHINCRBYFLOAT key field num [EX time] [EXAT time] [PX time] [PXAT time] [VER

ABS version] [MIN minval] [MAX maxval] [KEEPTTL]`

Incrementa el valor de punto flotante de un campo en num. Crea la clave o el campo si no existen (el campo comienza en 0 antes del incremento).

Comandos de caducidad

Comando

Sintaxis

Descripción

EXHEXPIRE

`EXHEXPIRE key field seconds [VER

ABS version]`

Establece un tiempo de caducidad relativo en segundos para un campo.

EXHPEXPIRE

`EXHPEXPIRE key field milliseconds [VER

ABS version]`

Establece un tiempo de caducidad relativo en milisegundos para un campo.

EXHEXPIREAT

`EXHEXPIREAT key field timestamp [VER

ABS version]`

Establece un tiempo de caducidad absoluto (marca de tiempo UNIX en segundos) para un campo.

EXHPEXPIREAT

`EXHPEXPIREAT key field milliseconds-timestamp [VER

ABS version]`

Establece un tiempo de caducidad absoluto (marca de tiempo UNIX en milisegundos) para un campo.

Comandos de lectura

Comando

Sintaxis

Descripción

EXHGET

EXHGET key field

Obtiene el valor de un campo. Devuelve nil si la clave o el campo no existen.

EXHMGET

EXHMGET key field [field ...]

Obtiene los valores de varios campos. Devuelve nil para los campos que no existen.

EXHGETWITHVER

EXHGETWITHVER key field

Obtiene el valor y el número de versión de un campo. Devuelve nil si la clave o el campo no existen.

EXHMGETWITHVER

EXHMGETWITHVER key field [field ...]

Obtiene los valores y los números de versión de varios campos.

EXHTTL

EXHTTL key field

Obtiene el TTL restante de un campo, en segundos.

EXHPTTL

EXHPTTL key field

Obtiene el TTL restante de un campo, en milisegundos.

EXHVER

EXHVER key field

Obtiene el número de versión actual de un campo.

EXHLEN

EXHLEN key [NOEXP]

Obtiene la cantidad de campos en la clave. Especifique NOEXP para contar solo los campos no caducados.

EXHEXISTS

EXHEXISTS key field

Comprueba si un campo existe.

EXHSTRLEN

EXHSTRLEN key field

Obtiene la longitud de la cadena de valor de un campo.

EXHKEYS

EXHKEYS key

Obtiene todos los campos de la clave.

EXHVALS

EXHVALS key

Obtiene todos los valores de los campos en la clave.

EXHGETALL

EXHGETALL key

Obtiene todos los campos y sus valores en la clave.

EXHSCAN

EXHSCAN key op subkey [MATCH pattern] [COUNT count]

Explora la clave de forma iterativa. Solo para instancias optimizadas para memoria.

Comandos de versión

Comando

Sintaxis

Descripción

EXHSETVER

EXHSETVER key field version

Establece el número de versión de un campo.

Comandos de eliminación

Comando

Sintaxis

Descripción

EXHDEL

EXHDEL key field [field ...]

Elimina uno o más campos de la clave.

DEL

DEL key [key ...]

Elimina una o más claves TairHash mediante el comando DEL nativo de Redis.

Convenciones de sintaxis

Convención

Significado

UPPERCASE KEYWORD

Palabra clave del comando

_italic_

Variable

[option]

Parámetro opcional

`A

B`

Exclusión mutua: especifique solo uno

...

El parámetro se puede repetir

EXHSET

complejidad temporal

**Sintaxis**

**`EXHSET key field value [EX time] [EXAT time] [PX time] [PXAT time] [NX

XX] [VER

ABS version] [KEEPTTL]`**

O(1)

Descripción

Agrega un campo a la clave TairHash especificada. Crea la clave si no existe. Sobrescribe el valor del campo si este ya existe.

Opciones

Opción

Descripción

key

La clave TairHash.

field

El campo que se va a establecer.

value

El valor del campo.

EX time

Tiempo de caducidad relativo en segundos. 0 significa que el campo caduca inmediatamente. Omítalo para no establecer caducidad.

EXAT time

Tiempo de caducidad absoluto como marca de tiempo UNIX en segundos. 0 significa que el campo caduca inmediatamente.

PX time

Tiempo de caducidad relativo en milisegundos. 0 significa que el campo caduca inmediatamente.

PXAT time

Tiempo de caducidad absoluto como marca de tiempo UNIX en milisegundos. 0 significa que el campo caduca inmediatamente.

NX

Establece el campo solo si aún no existe.

XX

Establece el campo solo si ya existe.

VER version

Control de concurrencia optimista. Si el campo existe y su versión actual coincide con version, la operación continúa y la versión se incrementa en 1. Si las versiones difieren, se devuelve un error. Si el campo no existe o su versión es 0, se omite la comprobación y la versión pasa a ser 1 después de la operación.

ABS version

Establece la versión en un valor exacto, independientemente de la versión actual.

KEEPTTL

Conserva la caducidad actual del campo cuando no se especifica EX, EXAT, PX ni PXAT. Sin KEEPTTL, EXHSET borra la caducidad existente.

Después de establecer un tiempo de espera para un campo, ejecutar EXHSET nuevamente sin una opción de tiempo de espera borra la caducidad (a menos que utilice KEEPTTL ). Para establecer una caducidad en la propia clave, utilice el comando nativo EXPIRE o EXPIREAT .

Valores devueltos

Valor

Significado

1

Se creó un nuevo campo.

0

El campo existía y su valor se sobrescribió.

-1

Se especificó XX pero el campo no existe, o se especificó NX pero el campo ya existe.

"ERR update version is stale"

Se especificó VER y la versión no coincide con la versión actual.

Ejemplo

EXHSET myhash field1 val EX 10
(integer) 1

EXHGET

**Sintaxis**

**EXHGET key field**

Complejidad temporal

O(1)

Descripción

Obtiene el valor de un campo. Devuelve nil si la clave o el campo no existen.

Valores devueltos

Valor

Significado

Valor del campo

El campo existe.

nil

La clave o el campo no existen.

Ejemplo

EXHSET myhash field1 val
EXHGET myhash field1
"val"

EXHMSET

**Sintaxis**

**EXHMSET key field value [field value ...]**

Complejidad temporal

O(N), donde N es la cantidad de campos

Descripción

Agrega varios campos a la clave TairHash especificada. Crea la clave si no existe. Sobrescribe los valores de los campos existentes.

Para establecer la caducidad en campos individuales después de su creación, utilice EXHEXPIRE, EXHPEXPIRE, EXHEXPIREAT o EXHPEXPIREAT. Para establecer la caducidad en la propia clave, utilice el comando nativo EXPIRE o EXPIREAT .

Valores devueltos

Valor

Significado

OK

La operación se completó correctamente.

Ejemplo

EXHMSET myhash field1 val1 field2 val2
OK

EXHEXPIRE

**Sintaxis**

**`EXHEXPIRE key field seconds [VER

ABS version]`**

Complejidad temporal

O(1)

Descripción

Establece un tiempo de caducidad relativo en segundos para un campo.

Opciones

Opción

Descripción

key

La clave TairHash.

field

El campo al que se le establecerá la caducidad.

seconds

Tiempo de caducidad relativo en segundos.

VER version

Mismo comportamiento de concurrencia optimista que en EXHSET.

ABS version

Establece la versión en un valor exacto, independientemente de la versión actual.

Valores devueltos

Valor

Significado

1

El campo existe y se estableció la caducidad.

0

El campo no existe.

Ejemplo

EXHSET myhash field1 val
EXHEXPIRE myhash field1 100
(integer) 1

EXHPEXPIRE

**Sintaxis**

**`EXHPEXPIRE key field milliseconds [VER

ABS version]`**

Complejidad temporal

O(1)

Descripción

Establece un tiempo de caducidad relativo en milisegundos para un campo.

Opciones

Opción

Descripción

key

La clave TairHash.

field

El campo al que se le establecerá la caducidad.

milliseconds

Tiempo de caducidad relativo en milisegundos.

VER version

Mismo comportamiento de concurrencia optimista que en EXHSET.

ABS version

Establece la versión en un valor exacto, independientemente de la versión actual.

Valores devueltos

Valor

Significado

1

El campo existe y se estableció la caducidad.

0

El campo no existe.

Ejemplo

EXHSET myhash field1 val
EXHPEXPIRE myhash field1 1000
(integer) 1

EXHEXPIREAT

**Sintaxis**

**`EXHEXPIREAT key field timestamp [VER

ABS version]`**

Complejidad temporal

O(1)

Descripción

Establece un tiempo de caducidad absoluto (marca de tiempo UNIX en segundos) para un campo.

Opciones

Opción

Descripción

key

La clave TairHash.

field

El campo al que se le establecerá la caducidad.

timestamp

Marca de tiempo UNIX absoluta en segundos.

VER version

Mismo comportamiento de concurrencia optimista que en EXHSET.

ABS version

Establece la versión en un valor exacto, independientemente de la versión actual.

Valores devueltos

Valor

Significado

1

El campo existe y se estableció la caducidad.

0

El campo no existe.

Ejemplo

EXHEXPIREAT myhash field1 1293840000
(integer) 1

EXHPEXPIREAT

**Sintaxis**

**`EXHPEXPIREAT key field milliseconds-timestamp [VER

ABS version]`**

Complejidad temporal

O(1)

Descripción

Establece un tiempo de caducidad absoluto (marca de tiempo UNIX en milisegundos) para un campo.

Opciones

Opción

Descripción

key

La clave TairHash.

field

El campo al que se le establecerá la caducidad.

milliseconds-timestamp

Marca de tiempo UNIX absoluta en milisegundos.

VER version

Mismo comportamiento de concurrencia optimista que en EXHSET.

ABS version

Establece la versión en un valor exacto, independientemente de la versión actual.

Valores devueltos

Valor

Significado

1

El campo existe y se estableció la caducidad.

0

El campo no existe.

Ejemplo

EXHPEXPIREAT myhash field1 1293840000000
(integer) 1

EXHTTL

**Sintaxis**

**EXHTTL key field**

Complejidad temporal

O(1)

Descripción

Obtiene el TTL restante de un campo, en segundos.

Valores devueltos

Valor

Significado

Entero positivo

TTL restante en segundos.

-1

El campo existe pero no tiene caducidad establecida.

-2

La clave no existe.

-3

El campo no existe.

Ejemplo

El siguiente ejemplo muestra todos los estados de retorno posibles en una sola secuencia: un campo con TTL establecido (85) y un campo sin caducidad (-1).

EXHSET myhash field1 val1 EX 100
EXHSET myhash field2 val2
EXHTTL myhash field1
EXHTTL myhash field2
EXHTTL myhash field3
(integer) 85
(integer) -1
(integer) -3

EXHPTTL

**Sintaxis**

**EXHPTTL key field**

Complejidad temporal

O(1)

Descripción

Obtiene el TTL restante de un campo, en milisegundos.

Valores devueltos

Valor

Significado

Entero positivo

TTL restante en milisegundos.

-1

El campo existe pero no tiene caducidad establecida.

-2

La clave no existe.

-3

El campo no existe.

Ejemplo

EXHSET myhash field1 val1 EX 100
EXHPTTL myhash field1
(integer) 97213

EXHVER

**Sintaxis**

**EXHVER key field**

Complejidad temporal

O(1)

Descripción

Obtiene el número de versión actual de un campo.

Valores devueltos

Valor

Significado

Entero positivo

El número de versión actual.

-1

La clave no existe.

-2

El campo no existe.

Ejemplo

EXHVER myhash field1
(integer) 1

EXHSETVER

**Sintaxis**

**EXHSETVER key field version**

Complejidad temporal

O(1)

Descripción

Establece el número de versión de un campo en un valor exacto.

Valores devueltos

Valor

Significado

1

Se estableció la versión.

0

La clave o el campo no existen.

Ejemplo

EXHSETVER myhash field1 3
(integer) 1

EXHINCRBY

**Sintaxis**

**`EXHINCRBY key field num [EX time] [EXAT time] [PX time] [PXAT time] [VER

ABS version] [MIN minval] [MAX maxval] [KEEPTTL]`**

Complejidad temporal

O(1)

Descripción

Incrementa el valor entero de un campo en num. Crea la clave o el campo si no existen; un campo nuevo comienza en 0 antes del incremento.

Opciones

Opción

Descripción

key

La clave TairHash.

field

El campo que se va a incrementar.

num

Valor entero del incremento.

EX, EXAT, PX, PXAT

Igual que en EXHSET.

VER version

Mismo comportamiento de concurrencia optimista que en EXHSET.

ABS version

Establece la versión en un valor exacto, independientemente de la versión actual.

MIN minval

Valor mínimo permitido. Devuelve un error si el resultado fuera menor que minval.

MAX maxval

Valor máximo permitido. Devuelve un error si el resultado superara maxval.

KEEPTTL

Conserva la caducidad actual del campo. Mismo comportamiento que en EXHSET.

Después de establecer un tiempo de espera para un campo, ejecutar EXHINCRBY nuevamente sin una opción de tiempo de espera borra la caducidad (a menos que utilice KEEPTTL ).

Valores devueltos

Valor

Significado

Entero

El nuevo valor después del incremento.

Ejemplo

EXHMSET myhash field1 10
EXHINCRBY myhash field1 100
(integer) 110

EXHINCRBYFLOAT

**Sintaxis**

**`EXHINCRBYFLOAT key field num [EX time] [EXAT time] [PX time] [PXAT time] [VER

ABS version] [MIN minval] [MAX maxval] [KEEPTTL]`**

Complejidad temporal

O(1)

Descripción

Incrementa el valor de punto flotante de un campo en num. Crea la clave o el campo si no existen; un campo nuevo comienza en 0 antes del incremento.

Opciones

Opción

Descripción

key

La clave TairHash.

field

El campo que se va a incrementar.

num

Valor de punto flotante del incremento.

EX, EXAT, PX, PXAT

Igual que en EXHSET.

VER version

Mismo comportamiento de concurrencia optimista que en EXHSET.

ABS version

Establece la versión en un valor exacto, independientemente de la versión actual.

MIN minval

Valor mínimo permitido. Devuelve un error si el resultado fuera menor que minval.

MAX maxval

Valor máximo permitido. Devuelve un error si el resultado superara maxval.

KEEPTTL

Conserva la caducidad actual del campo. Mismo comportamiento que en EXHSET.

Después de establecer un tiempo de espera para un campo, ejecutar EXHINCRBYFLOAT nuevamente sin una opción de tiempo de espera borra la caducidad (a menos que utilice KEEPTTL ).

Valores devueltos

Valor

Significado

Cadena de punto flotante

El nuevo valor después del incremento.

Ejemplo

EXHMSET myhash field1 10
EXHINCRBYFLOAT myhash field1 9.235
"19.235"

EXHGETWITHVER

**Sintaxis**

**EXHGETWITHVER key field**

Complejidad temporal

O(1)

Descripción

Obtiene el valor y el número de versión de un campo. Devuelve nil si la clave o el campo no existen.

Valores devueltos

Valor

Significado

Matriz de [value, version]

El campo existe.

nil

La clave o el campo no existen.

Ejemplo

EXHGETWITHVER myhash field1
1) "19.235"
2) (integer) 5

EXHMGET

**Sintaxis**

**EXHMGET key field [field ...]**

Complejidad temporal

O(1)

Descripción

Obtiene los valores de varios campos. Devuelve nil para los campos que no existen.

Valores devueltos

Valor

Significado

nil

La clave no existe.

Matriz de valores

Un elemento por cada campo solicitado; nil para los campos inexistentes.

Ejemplo

EXHMSET myhash field1 10 field2 var1
EXHMGET myhash field1 field2
1) "10"
2) "var1"

EXHMGETWITHVER

**Sintaxis**

**EXHMGETWITHVER key field [field ...]**

Complejidad temporal

O(1)

Descripción

Obtiene los valores y los números de versión de varios campos. Devuelve nil para los campos que no existen.

Valores devueltos

Valor

Significado

nil

La clave no existe.

Matriz de pares [value, version]

Un elemento por cada campo solicitado; nil para los campos inexistentes.

Ejemplo

EXHMSET myhash field1 10 field2 var1
EXHMGETWITHVER myhash field1 field2
1) 1) "10"
   2) (integer) 1
2) 1) "var1"
   2) (integer) 1

EXHLEN

**Sintaxis**

**EXHLEN key [NOEXP]**

Complejidad temporal

O(1) sin NOEXP; O(N) con NOEXP

Descripción

Obtiene la cantidad de campos en la clave. De forma predeterminada, incluye los campos que han caducado pero aún no se han eliminado. Utilice NOEXP para contar solo los campos no caducados.

Opciones

Opción

Descripción

NOEXP

Recorre toda la clave y filtra los campos caducados antes de contar. Tenga en cuenta que NOEXP filtra campos del recuento pero no los desaloja. El tiempo de respuesta escala según el tamaño de la clave.

Valores devueltos

Valor

Significado

Entero

Cantidad de campos (puede incluir campos caducados pero no eliminados si no se usa NOEXP).

0

La clave no existe.

Ejemplo

EXHLEN myhash
(integer) 2

EXHEXISTS

**Sintaxis**

**EXHEXISTS key field**

Complejidad temporal

O(1)

Descripción

Comprueba si un campo existe en la clave.

Valores devueltos

Valor

Significado

1

El campo existe.

0

La clave o el campo no existen.

Ejemplo

EXHEXISTS myhash field1
(integer) 1

EXHSTRLEN

**Sintaxis**

**EXHSTRLEN key field**

Complejidad temporal

O(1)

Descripción

Obtiene la longitud de la cadena de valor de un campo.

Valores devueltos

Valor

Significado

Entero positivo

La longitud de la cadena.

0

La clave o el campo no existen.

Ejemplo

EXHSTRLEN myhash field1
(integer) 2

EXHKEYS

**Sintaxis**

**EXHKEYS key**

Complejidad temporal

O(N)

Descripción

Obtiene todos los campos de la clave.

Valores devueltos

Valor

Significado

Matriz de nombres de campos

La clave existe.

Matriz vacía

La clave no existe.

Ejemplo

EXHMSET myhash field1 10 field2 var1
EXHKEYS myhash
1) "field1"
2) "field2"

EXHVALS

**Sintaxis**

**EXHVALS key**

Complejidad temporal

O(N)

Descripción

Obtiene todos los valores de los campos en la clave.

Valores devueltos

Valor

Significado

Matriz de valores

La clave existe.

Matriz vacía

La clave no existe.

Ejemplo

EXHMSET myhash field1 10 field2 var1
EXHVALS myhash
1) "10"
2) "var1"

EXHGETALL

**Sintaxis**

**EXHGETALL key**

Complejidad temporal

O(N)

Descripción

Obtiene todos los campos y sus valores en la clave. La respuesta alterna entre nombres de campos y valores.

Valores devueltos

Valor

Significado

Matriz de pares campo-valor

La clave existe.

Matriz vacía

La clave no existe.

Ejemplo

EXHMSET myhash field1 10 field2 var1
EXHGETALL myhash
1) "field1"
2) "10"
3) "field2"
4) "var1"

EXHSCAN

**Sintaxis**

**EXHSCAN key op subkey [MATCH pattern] [COUNT count]**

Complejidad temporal

O(1) por llamada; O(N) para un recorrido completo

Descripción

Explora la clave de forma iterativa y devuelve un cursor junto con un lote de pares campo-valor. Solo para instancias optimizadas para memoria.

Opciones

Opción

Descripción

key

La clave TairHash.

op

Posición inicial de la exploración. Consulte los valores válidos a continuación.

subkey

Campo de referencia utilizado con op. Se ignora cuando op es ^ o $.

MATCH pattern

Filtra los resultados mediante un patrón de expresión regular aplicado a los nombres de los campos.

COUNT count

Cantidad de campos que se explorarán por llamada. El valor predeterminado es 10. La cantidad real de resultados puede variar según el tamaño de la clave y si se aplica MATCH.

Valores válidos de op

Valor

Posición inicial

>

Primer campo mayor que subkey

>=

Primer campo mayor o igual que subkey

<

Primer campo menor que subkey

<=

Primer campo menor o igual que subkey

==

Primer campo igual a subkey

^

Primer campo de la clave

$

Último campo de la clave

Valores devueltos

La respuesta es una matriz de dos elementos:

  1. El campo inicial para la siguiente llamada de exploración. Vacío cuando la exploración ha terminado.

  2. Los campos explorados y sus valores, intercalados como [field, value, field, value, ...].

Devuelve una matriz vacía si la clave no existe.

Ejemplo

EXHMSET myhashkey field1 val1 field2 val2 field3 val3 field4 val4 field5 val5
EXHSCAN myhashkey ^ xx COUNT 3
1) "field4"
2) 1) "field1"
   2) "val1"
   3) "field2"
   4) "val2"
   5) "field3"
   6) "val3"

La siguiente exploración comienza desde field4. Pase field4 como subkey con op >= para continuar.

EXHDEL

**Sintaxis**

**EXHDEL key field [field ...]**

Complejidad temporal

O(1)

Descripción

Elimina uno o más campos de la clave.

Valores devueltos

Valor

Significado

1

Se eliminó el campo.

0

La clave o el campo no existen.

Ejemplo

EXHDEL myhash field1
(integer) 1

Preguntas frecuentes

¿Por qué exHash utiliza más memoria que un hash estándar de Redis para los mismos datos?

Cada campo en TairHash almacena metadatos adicionales (la marca de tiempo de caducidad y el número de versión) que un hash estándar de Redis no posee. Estos metadatos adicionales por campo son la causa del mayor uso de memoria.