Redis et les HashMaps
Je viens de visionner le TIA (tool in action) de Nicolas Martignole lors de Devoxx FR 2014 sur Redis : Redis, une base Not Only NoSQL. Je lâavais loupĂ©, je passais juste aprĂšs et du coup, âlĂ©gĂšrement tenduâ je me prĂ©parais âpsychologiquementâ ;). Je vous engage vivement Ă le visionner, câest une trĂšs bonne prĂ©sentation de Redis, qui en plus âsentâ le vĂ©cu, puis Nicolas nous parle de son expĂ©rience rĂ©elle avec Redis.
Et du coup, ça mâa donnĂ© une idĂ©e de post pour mon Blog. Le sujet et court, mais pourra en intĂ©resser certains.
Câest probablement du Ă lâinfluence de Backbone (oui oui, le framework javascript), mais souvent je reprĂ©sente mes modĂšles avec une propriĂ©tĂ© fields
qui est une hashmap, généralement comme ceci:
Alors, on aime ou pas, mais je trouve ça pratique.
Pré-requis: avoir visionné le TIA de Nicolas.
HMSET
Il se trouve que la commande HMSET
de Redis permet dâenregistrer des hashs (associĂ©s Ă une clĂ©): http://redis.io/commands/hmset et que le driver Java Jedis (https://github.com/xetorthio/jedis) possĂšde la mĂ©thode âhelperâ hmset(key, map)
qui permet de sauvegarder des hashmaps de ce type HashMap<String, String>
. (1)
Un petit exemple ici sur le repo Jedis : https://github.com/xetorthio/jedis/blob/master/src/test/java/redis/clients/jedis/tests/commands/HashesCommandsTest.java# L81
(1): il nây a que des types String
avec Redis, donc oubliez le type Object
.
Application en Java
Donc en java, si jâavais des hashmaps qui reprĂ©senteraient des humains, jâaurais le code suivant:
Connexion Ă Redis et dĂ©finition des âhumainsâ
Sauvegarde des âhumainsâ
Retrouver un âhumainâ
On utilise la méthode hgetAll
en lui passant la clĂ© de âlâhumainâ recherchĂ©
En sortie, nous aurons ceci:
{lastName=Doe, firstName=Jane}
Lister toutes les clés
En sortie, nous aurons ceci:
bob:male
john:male
jane:female
Lister toutes les âhumainsâ
Pour cela nous passerons par la liste des clés:
En sortie, nous aurons ceci:
{firstName=Bob, lastName=Morane}
{firstName=John, lastName=Doe}
{lastName=Doe, firstName=Jane}
Ne lister que les garçons
En sortie, nous aurons ceci:
{firstName=Bob, lastName=Morane}
{firstName=John, lastName=Doe}
Remarquez la façon dâutiliser la mĂ©thode keys
: on utilise comme paramĂštre *:male
qui signifie: âje veux toutes les clĂ©s qui se termine par :male
â.
Ce qui signifie que la clĂ© est porteuse dâinformations et quâil est important de bien rĂ©flĂ©chir Ă la maniĂšre de la construire.
Vous trouverez le code source ici: https://github.com/java-experiments/try-redis-with-jedis
En Golo pour la route
Juste le listing Golo, qui se passe dâexplication (la logique reste la mĂȘme)
(Cela faisait en partie partie de mon TIA Golo, de la sucrette syntaxique pour vos applications Java)
Vous trouverez le code source ici: https://github.com/golo-sandbox/try-redis-with-golo
Demain, je vous parle encore de Redis mais avec du Node.js.
Tweet