Omet navegació

2.3.3 - Hash

Ja havíem comentat que el tipus Hash és una espècie de registre, amb subcamps (en realitat hauríem de dir sub-claus). Pot tenir qualsevol número de subcamps que seran de tipus String.

Redis és molt eficient en quant a l'espai que ocupen els Hash, i sobretot en el temps de recuperació de les dades.

Els comandos que vam veure per al String no es poden aplicar al Hash. Tanmateix els comandos del Hash són molt similars a aquells, començant sempre per H.

Veurem els següents comandos:

hset  ,  hget  ,  hgetall  ,  hdel  ,  hkeys  ,  hvalshmget   ,  hmset  ,  hexists  ,  hsetnx  ,  hincrby

HSET

Sintaxi

hset clau camp valor

Assigna al camp especificat de la clau especificada el valor especificat. Si el valor consta de més d'una paraula, haurà d'anar entre cometes dobles.

Si la clau no existia, la crearà, i si ja existia, senzillament afegirà el camp. I si d'aquesta clau  ja existia el camp, modificarà el seu valor.

Evidentment, en claus diferents poden haver camps amb els mateixos noms.

Exemples

127.0.0.1:6379> hset empleat_1 nom Andreu
(integer) 1
127.0.0.1:6379> hset empleat_1 departament 10
(integer) 1
127.0.0.1:6379> hset empleat_1 sou 1000.0
(integer) 1

127.0.0.1:6379> hset empleat_2 nom Berta
(integer) 1
127.0.0.1:6379> hset empleat_2 sou 1500.0
(integer) 1

HGET

Sintaxi

hget clau camp

Torna el valor del camp de la clau. Si no existia (el camp o la clau) torna nil. Només podem especificar un camp.

Exemples

127.0.0.1:6379> hget empleat_1 nom
"Andreu"
127.0.0.1:6379> hget empleat_1 departament
"10"
127.0.0.1:6379> hget empleat_2 nom
"Berta"
127.0.0.1:6379> hget empleat_2 departament
(nil)

HGETALL

Sintaxi

hgetall clau

Torna una llista amb tots els camps i els seus valors de la clau. La seqüència és: camp1 valor1 camp2 valor2 ... Però no ens podem fiar que l'ordre siga el mateix ordre que quan el vam definir.

Exemples

127.0.0.1:6379> hgetall empleat_1
1) "nom"
2) "Andreu"
3) "departament"
4) "10"
5) "sou"
6) "1000.0"

HDEL

Sintaxi

hdel clau camp1 camp2 campN

Elimina el o els camps especificats. Si no existeixen algun d'ells, senzillament l'ignora i si que elimina els altres.

Exemples

127.0.0.1:6379> hdel empleat_1 departament
(integer) 1
127.0.0.1:6379> hgetall empleat_1
1) "nom"
2) "Andreu"
3) "sou"
4) "1000.0"

HKEYS

Sintaxi

hkeys clau

Torna una llista amb els camps de la clau. Si la clau no existia, torna una llista buida

Exemples

127.0.0.1:6379> hkeys empleat_1
1) "nom"
2) "sou"

HVALS

Sintaxi

hvals clau

Torna una llista amb els valors (únicament els valors) de tots els camps de la clau. Si la clau no existia, torna una llista buida

Exemples

127.0.0.1:6379> hvals empleat_1
1) "Andreu"
2) "1000.0"

Altres Comandos

També existeixen altres comandos, de funcionament com cabria esperar (els hem vist tots en el cas de String):

  • hmget: Torna més d'un camp de la clau
  • hmset: assigna més d'un camp a una clau
  • hexists: indica si existeix el subcamp de la clau
  • hsetnx: assigna únicament en cas de que no existisca el camp.
  • hincrby: incrementa el camp de la clau