# Redis

Redis és un projecte en xarxa de codi obert de base de dades accedida sobre memòria, basada en taules hash i amb persistència opcional. Redis suporta diferents tipus d'estructures de dades abstractes tals com cadenes, llistes, mapes, conjunts, mapes de bits... El projecte va ser desenvolupat per Salvatore Sanfilippo i actualment té el suport de Redis labs.

## Propietats

* Redis és una base de dades NoSQL (base de dades no relacional).
* Redis utilitza taules hash.
* Redis emmagatzema les dades en memòria RAM (no en disc dur) i, per tant, el temps d'accés o latència és molt ràpid.
* Llenguarges de programació suportats : ActionScript, C, C++, C#, Chicken Scheme, Clojure, Common Lisp, D, Dart, Erlang, Go, Haskell, Haxe, Io, Java, JavaScript (Node.js), Julia, Lua, Objective-C, OCaml, Perl, PHP, Pure Data, Python, R, Racket, Ruby, Rust, Scala, Smalltalk i Tcl.

## Tipus de dades

* Llistes de cadenes.
* Conjunts de cadenes.
* Conjunts de cadenes ordenades.
* Taules hash.
* HyperLogLogs
* Dades geoespacials.

## Comandes

| Tipus | Comandes | Descripció |
| Clúster | ADDSLOTS COUNT-FAILURE REPORT COUNTKEYSINSLOT DELSLOTS FAILOVER FORGET GETKEYSINSLOT INFO KEYSLOT MEET NODES REPLICATE RESET SAVECONFIG SET-CONFIG-EPOCH SETSLOT SLAVES SLOTS READONLY READWRITE | Assigna un nou slot hash al node de recepció. Retorna el nombre d'informes de fallida d'un node donat. Retorna el nombre de claus locals en el slot hash donat. Configura hash slots com a no vinculat en mode recepció. Força un esclau a una caiguda manual del master. Esborra un node de la taula de nodes. Retorna els noms de les claus locals en el hash slot donat. Proveeix informació sobre l'estat del node del clúster Redis. Retorna el hash slot de la clau donada. Força un node del clúster a sincronitzar amb un altre node. Obté la configuració del Clúster pel node. Reconfigura un node coma esclau del node master donat. Reiniclialitza un node clúster a soncronitzar amb un altre node. Força el node a salvar l'estat del clúster a disc. Salva la configuració a un nou node. Vincula un hash slot a un node donat. Llista els nodes esclau del node master donat. Obté la matriu del clúster slot. Habilita consultes de lectura per a un node esclau. Deshabilita la consulta de lectura per a un node esclau. |
| Connexió | AUTH contrasenya ECHO missatge PING SELECT index SWAPDB QUIT | Autentica al servidor. Visualitza el missatge. Fer un ping al servidor. Canvia la base de dades seleccionada per la connexió actual. Intercanvia dues bases de dades Redis. Tanca la connexió. |
| Geo | GEOADD clau long lat ... GEOHASH clau membre ... GEOPOS clau membre ... GEODIST clau membre1 ... GEORADIUS clau long lat ... GEORADIUSBYMEMBER clau membre ... | Afegeix una o més dada geoespacial. Retorna membres d'un índex geoespacial. Retorna longitud i latitud dels membres. Retorna la distància entre dos membres. Consulta un índex geoespacial punt a un conjunt ordenat Consulta un índex geoespacial distància a un conjunt ordenat. |
| Hashes | HDEL clau camp ... HEXISTS clau camp HGET clau camp HGETALL clau UINCRBY clau camp increment HINCRBYFLOAT clau camp HKEYS clau HLEN clau MHGET clau camp ... HMSET clau camp valor ... HSET clau camp valor HSETNX clau camp valor HSTRLEN clau camp valor HVALS clau HSCAN clau cursor ... | Esborra un o més camps hash. Determina si un camp hash existeixi. Obté el valor del camp hash. Obté tots els camps i valors d'un hash. Incrementa el valor enter d'un camp hash pel nombre donat. Incrementa el valor flotant d'un camp hash pel nombre donat. Obté tots els camps en un hash. Obté el nombre de camps en un hash. Obté els valors d'un camp hash donat. Configura els camps hash a valor múltiples. Configura el valor cadena d'un camp hash. Configura el valor d'un camp hash, només si no existeix. Obté la longitud del valor d'un camp hash. Obté tots els valors en un hash. Iterar camps hash i associar valors. |
| HyperLogLog | PFADD clau element ... PFCOUNT clau ... PFMERGE clau_destí clau_origen ... | Afegir elements al HyperLogLog donat. Retorna la cardinalitat aproximada del conjunt donat. Fusiona N HyperLogLog diferents. |
| Claus | DEL clau ... DUMP clau EXISTS clau ... EXPIRE clau segons EXPIREAT clau temps KEYS model MIGRATE host port clau MOVE clau db OBJECT subcomanda PERSIST clau PEXPIRE clau msec PEXPIREAT clau msec. PTTL clau RANDOMKEY RENAME clau nova_clau RENAMENX clau nova_clau RESTORE clau ttl valor SORT clau TOUCH clau ... TTL clau TYPE clau UNLINK clau ... WAIT SCAN cursor | Esborra claus. Retorna el valor serialitzat guardat en una clau donada. Determina si una clau existeix. Configura el temps d'existència d'una clau. Configura l'expiració d'una clau com a UNIX (timestamp) Troba totes les claus coincidint un model. Transfereix una clau d'una base de dades Redis a una altra. Mou una clau a una altra base de dades. Inspecciona els objectes Redis. Esborra l'expiració d'una clau. Configura el temps d'expiració d'una clau en msec. Configura l'expiració d'una clau coma UNIX. Obté el temps d'expiració d'una clau en msec. Retorna una clau aleatòria. Reanomena una clau. Reanomena una clau, només si no existeix. Crea una clau usant el valor serialitzat. Ordena els elements en una llista. Altera el darrer temps d'accés d'una clau. Obté l'expiració d'una clau. Determina el tipus guardat en una clau. Esborra una clau assíncronament. Espera el replicar síncron de les comandes d'escriptura. Itera l'espai de claus. |
| Llistes | BLPOP clau ... BRPOP clau ... BRPOPLPUSH origen destí ... LINDEX clau índex LINSERT clau ... LLEN clau LPOP clau LPUSH clau valor ... LPUSHX calu valor LRANGE clau inici final LREM clau compte valor LSET clau índex valor LTRIM clau inici final RPOP clau RPOPLPUSH origen destí RPUSH clau valor ... RPUSHX clau valor | Esborra i obté el primer element d'una llista. Esborra i obté el darrer element d'una llista. Extreu un valor d'una llista, entra-la a una altra llista. Obté un element d'una llista mitjançant índex. Inserta un element abans o després d'un altre element. Obté la longitud d'una llista. Esborra i obté el primer element d'una llista. Afegeix un o diversos valors a una llista. Afegeix un valor a una llista, només si la llista existeix. Obté un rang d'elements des d'una llista. Esborra elements des d'una llista. Configura el valor d'un element en una llista amb l'índex. Retalla un rang específic d'una llista. Esborra i obté el darrer element en una llista. Esborra el darrer element en una llista. Afegeix un o més valors a una llista. Afegeix un valor a una llista, si la llista existeix. |
| Pub/Sub | PSUBSCRIBE model... PUBSUB subcomanda ... PUBLISH canal missatge PUNSUBSCRIBE model ... SUBSCRIBE canal ... UNSUBSCRIBE canal ... | Escolta missatges publicats als canals coincidents donat. Inspecciona l'estat del subsistema Pub/Sub. Publica un missatge a un canal. Acaba d'escoltar missatges publicats a canals coincidents donat. Escolta missatges publicats als canals donats. Para d'escoltar missatges publicats a canals donats. |
| Scripting (guions) | EVAL script clau ... script claus ... EVALSHA sha1 claus ... SCRIPT DEBUG SCRIPT EXISTS sha1 ... SCRIPT FLUSH SCRIPT KILL SCRIPT LOAD script | Executa un script Lua al costat del servidor. Executa un script Lua al costat del servidor. Configura el mode depurar per a executar scripts. Comprova l'existència d'scripts. Esborra tots els scripts. Para l'script actual en execució. Carrega l'script Lua. |

## Implementacions

Aplicacions més conegudes que utilitzen Redis : Twitter, GitHub, Weibo, Pinterest, Snapchat, Craigslist, Digg, Stack Overflow, Flickr.

## Referències

* ↑ Otwell, Taylor. «Redis - Laravel - The PHP Framework For Web Artisans» (en anglès). https://laravel.com/.+[Consulta: 11 novembre 2017].
* ↑ «Redis – NoSQL Database, an introduction - w3resource» (en anglès). https://www.w3resource.com.+[Consulta: 11 novembre 2017].
* ↑ «Comparing In Memory Databases: Redis vs. MongoDB» (en anglès). https://scalegrid.io.+[Consulta: 11 novembre 2017].
* ↑ «How many Redis databases can I create and manage?» (en anglès). Redis Labs. Arxivat de l'original el 2017-11-12 [Consulta: 11 novembre 2017].