- Remote Dictionary Server
- Salvatore Sanfilippo (antirez)
- 2010 embauché par VMWare, puis Redis sponsorié par Pivotal 2013
- 2015 Redis Labs
- LiveJournal (1999) Brad Fitzpatrick
- Memcached inventé là-bas (2003)
- Caching basique
- Memcached protocol très simple
- Redis première release en 2009, memcached protocol
- KV-store principalement une database NoSQL key-value
- types de données très riche
- RAM-only
- mono-processus
- persistence: snapshot (RDB) + append only file (AOF) et réécriture en background
- replication: master slave
- scripting avec Lua
- PubSub
- Sentinel
- Clustering
- modules
- caching
- queues
- stockage chaud
- real-time actions (pub, real time bidding, etc)
- pipelining (pubsub)
- très facile d'installation, configuration, utilisation
- vitesse fulgurante comparée aux autres DB
- par définition opérations atomiques
- KV store: très très riche
- clef -> valeur (string, hash, list, set, etc)
- strings (binary data)
- hashtables
- lists
- sets (ensembles de valeurs discrètes)
- sets triés
- HyperLogLogs (datastructure statistique pour compter à peu près)
- facile d'implémenter un bloom filter, etc
- chaque noeud fait tourner Lua
- API Redis dans Lua
- Atomique
- remplace le système de transactions
- client s'inscrivent sur un Redis
- clients écoutent un ou des channels (regex)
- client écrit sur un channel
- Redis broadcast sur les channels
- replication: slave peut devenir un master, accepter les écritures, sous-répliquer
- HighAvaiaibility: monitoring, failover, config pour autres Redis et Sentinel
- Sentinel = REDIS + PUBSUB + HEARTBEAT
- très utile pour basculer entre masters, slaves, etc
- quorum elections and propagation (subjective down and objective down)
- pas d'algo consensus (paxos), mais gossip sur un timeout
- auto-decouverte des autres sentinels via les Redis master, et des slaves via master info
- Clustering = Redis + Sentinel + pubsub + conventions
- pragmatique: AP, avec perte de données (minime): last failover wins
- full mesh
- noeuds ne sont pas tous identiques: masters et slaves
- opérations sur une clefs supportées
- opérations sur groupe de clefs supportées si toutes les clefs sont sur un noeud
- hash tags pour forcer certaines clefs à etre sur un même noeud
- le couteau suisse absolu à connaitre et utiliser.
- en mode single node, facile, rapide, puissant et evolutif (Lua, pubsub)
- mode clustering intéressant car complètement flexible et configurable