Table des matières
Redis
Application pour gérer Redis: RedisInsight
Utilisation sans docker
sudo apt install redis redis-server # starts redis
Utilisation du CLI:
redis-cli
ou bien:
redis-cli -h localhost -p 6379 -a password
Commands
- Basic values (string): SET, GET
- HashMaps: HSET, HGET, HMGET (Get multiple keys)
Keys and Scan
KEYS somekey:*
L'utilisation de KEYS
peut ne pas être recommendé.
SCAN 0 COUNT 50 MATCH somekey:*
HashMaps
Example:
> HSET loggedUser:123 name "John Doe" url "https://url" role "Developer" (integer) 3 > HMGET loggedUser:123 name role 1) "John Doe" 2) "Developer"
Exemple d'un panier:
> HSET cart:123 prod:1:name "Oranges" prod:1:price "2,23" prod:1:amount "1" prod:2:name "Apples" prod:2:price "1,50" prod:2:amount "4" (integer) 5 > HINCRBY cart:123 prod:1:amount 3 (integer) 4 > HGETALL cart:123 1) "prod:1:name" 2) "Oranges" 3) "prod:1:price" 4) "1,50" 5) "prod:1:amount" 6) "4" 7) "prod:2:name" 8) "Apples" 9) "prod:2:amount" 10) "4" > HLEN cart:123 (integer) 5
Listes
- LPUSH: Left push
- RPUSH: Right push
> LPUSH mylist "one" "two" "three" "last element" > LPOP mylist "last element" (integer) 4 > LPOP mylist 3 1) "three" 2) "two" 3) "one"
- FIFO Queue: using RPUSH with LPOP
- LIFO Queue: using LPUSH with LPOP
> LPUSH mylist "one" "two" "three" "last element" (integer) 4 > LRANGE mylist 0 1 1) "last element" 2) "three" > LRANGE mylist 0 -1 1) "last element" 2) "three" 3) "two" 4) "one"
INSERT
> LINSERT mylist AFTER "two" "four" (integer) 5 > LRANGE mylist 0 -1 1) "last element" 2) "three" 3) "two" 4) "four" 5) "one"
Sets
Set est une liste non ordonnée.
- SADD: Add to a set
- SPOP: Retrieve random element from set
- SREM: Remove element from set
- SMEMBERS [queuename]: list elements
SADD thequeue "Element1" "Element2" "Element2" SMEMBERS thequeue
Utilisation comme Message Broker
SUBSCRIBE <channel name>
Sur un client Consumer:
SUBSCRIBE notifications
Sur un autre client Producer:
PUBLISH notifications "Ici un message important"
Le message apparaîtra sur le client subcriber.
Leaderboard
ZADD leaderboard 200 "Player 2" ZADD leaderboard 240 "Player 3" ZADD leaderboard 100 "Player 1" ZADD leaderboard 180 "Player 5" ZADD leaderboard 320 "Player 4" ZRANGE leaderboard 0 5
Par défaut, c'est ordonné dans un sens ascendant. Pour le top score en haut, on peut faire ceci:
ZREVRANGE leaderboard 0 5
Mise à jour des points:
ZINCRBY leaderboard 440 "Player 3"
Keyspace Notifications
Il faut configurer cela pour pouvoir subscribe à des événements Redis. Par exemple, nous voudrions peut-être réagir à une clé expirée.
Avec le redis-cli
on peut faire:
> config set notify-keyspace-events KEx
KEx
comprends les événements d'expiration, on peut utiliser KEA
pour toutes sortes d'événements. Voir Keyspace notifications Configuration pour les options.
Configuration par fichier
Si on utilise une image Bitnami de Redis, on a la possibilité de spécifier un fichier de configuration overrides.conf
qui contient ce paramètre:
notify-keyspace-events "KEx"
Ensuite dans le docker-compose.yml
, on peut monter ce fichier:
- ./conf/redis/overrides.conf:/opt/bitnami/redis/mounted-etc/overrides.conf
Licensing
Depuis la version 7.4, Redis se présente sous deux licences différentes:
- Redis Source Available License (RSALv2): permet aussi la copie, la distribution, la création de dérivés et la mise à disposition de tiers, mais interdit toute commercialisation ou fourniture en tant que service managé.
- Server Side Public License: SSPL lève cette barrière, mais impose à quiconque propose à des tiers un programme en tant que service d’ouvrir gratuitement le code source de son implémentation.
Alternatives:
- Garnet (Microsoft)
Logiciels de management
- Redis Insight ⇒ Direct download