3.2.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 són 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.
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