Outils pour utilisateurs

Outils du site


bases_de_donnees:redis

Redis

Application pour gérer Redis: RedisInsight

Commands

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:

Logiciels de management

bases_de_donnees/redis.txt · Dernière modification : 2024/09/10 20:55 de sgariepy