Redis
Internals
Databases
permet d'isoler les projets (SELECT xxx)
- lister les db et checker vite fait leur contenu:
info keyspace
SELECT 0
pr selectionner la db 0
Connection
- timeout: par defaut 5 seconde pour le client
Persistence:
deux modes: AOF et RDB. Les 2 peuvent être activés en mm temps.
- RDB (redis rb) snapshots to disk: occur au bout d'un temps + d'un nombre minimal d'opérations ayant eu lieu sur la DB.
- AOF: append only file
Eviction policy
On alloue une taille maxmemory
à Redis pour stocker ses data:
- verifier la conf en CLI:
config get maxmemory
- set la policy:
config set maxmemory-policy
En fonction de la policy, quand maxmemory
est atteint:
noeviction
, redis passe en read-only + erreurs de writeallkeys-lru
, fait un lru sur n'importe quelle clé, même persistantevolatile-lru
, fait un lru uniquement sur les clés qui ont un expirevolatile-ttl
, fait un lru uniquement sur les clés qui ont un expire, et choisit parmi elles celle qui ont le plus bas TTL
Attention cette conf est valable pour TOUTES les db de l'instance. Comme le dit Antirez:
(...) as explained multiple times Redis multiple databases are just a namespace-alike feature, so there is and there never will be per-database configuration related to eviction, persistence, and so forth, because the feature is designed for a totally different goal.
Pipeline
Features
Version history
- 2.6: scripting LUA
- 5: Streams
- 6 RC1: ACL
Streams
Distributed locking
Algorithme Redlock de Antirez pour implémenter un DLM (distributed locking manager)