Redis - Guía rápida

Redis es un almacén de valor clave avanzado de código abierto y una solución apta para crear aplicaciones web escalables y de alto rendimiento.

Redis tiene tres peculiaridades principales que lo distinguen.

  • Redis mantiene su base de datos completamente en la memoria, usando el disco solo para persistencia.

  • Redis tiene un conjunto relativamente rico de tipos de datos en comparación con muchos almacenes de datos de valor clave.

  • Redis puede replicar datos a cualquier número de esclavos.

Ventajas de Redis

A continuación se muestran algunas ventajas de Redis.

  • Exceptionally fast - Redis es muy rápido y puede realizar aproximadamente 110000 SETs por segundo, aproximadamente 81000 GETs por segundo.

  • Supports rich data types- Redis admite de forma nativa la mayoría de los tipos de datos que los desarrolladores ya conocen, como lista, conjunto, conjunto ordenado y hashes. Esto facilita la resolución de una variedad de problemas, ya que sabemos qué problema se puede manejar mejor con qué tipo de datos.

  • Operations are atomic - Todas las operaciones de Redis son atómicas, lo que garantiza que si dos clientes acceden simultáneamente, el servidor de Redis recibirá el valor actualizado.

  • Multi-utility tool - Redis es una herramienta de múltiples utilidades y se puede utilizar en una serie de casos de uso, como almacenamiento en caché, colas de mensajería (Redis admite de forma nativa Publicar / Suscribirse), cualquier dato de corta duración en su aplicación, como sesiones de aplicaciones web, aplicaciones web. recuentos de visitas a la página, etc.

Redis frente a otras tiendas de valores clave

  • Redis es una ruta de evolución diferente en las bases de datos de valor-clave, donde los valores pueden contener tipos de datos más complejos, con operaciones atómicas definidas en esos tipos de datos.

  • Redis es una base de datos en memoria pero persistente en la base de datos de disco, por lo tanto, representa una compensación diferente donde se logra una velocidad de escritura y lectura muy alta con la limitación de conjuntos de datos que no pueden ser más grandes que la memoria.

  • Otra ventaja de las bases de datos en memoria es que la representación en memoria de estructuras de datos complejas es mucho más sencilla de manipular en comparación con la misma estructura de datos en disco. Por lo tanto, Redis puede hacer mucho con poca complejidad interna.

En este capítulo, aprenderá sobre la configuración del entorno de Redis.

Instalar Redis en Ubuntu

Para instalar Redis en Ubuntu, vaya a la terminal y escriba los siguientes comandos:

$sudo apt-get update $sudo apt-get install redis-server

Esto instalará Redis en su máquina.

Iniciar Redis

$redis-server

Compruebe si Redis está funcionando

$redis-cli

Esto abrirá un mensaje de redis.

redis 127.0.0.1:6379>

En el mensaje anterior, 127.0.0.1 es la dirección IP de su máquina y 6379es el puerto en el que se ejecuta el servidor Redis. Ahora escribe lo siguientePING mando.

redis 127.0.0.1:6379> ping 
PONG

Esto muestra que Redis se instaló correctamente en su máquina.

Instalar Redis Desktop Manager en Ubuntu

Para instalar el administrador de escritorio de Redis en Ubuntu, simplemente descargue el paquete desde https://redisdesktop.com/download

Abra el paquete descargado e instálelo.

El administrador de escritorio de Redis le brindará una interfaz de usuario para administrar sus claves y datos de Redis.

En Redis, hay un archivo de configuración (redis.conf) disponible en el directorio raíz de Redis. Aunque puede obtener y establecer todas las configuraciones de Redis por RedisCONFIG mando.

Sintaxis

A continuación se muestra la sintaxis básica de Redis CONFIG mando.

redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME

Ejemplo

redis 127.0.0.1:6379> CONFIG GET loglevel  
1) "loglevel" 
2) "notice"

Para obtener todos los ajustes de configuración, use * en lugar de CONFIG_SETTING_NAME

Ejemplo

redis 127.0.0.1:6379> CONFIG GET *  
  1) "dbfilename" 
  2) "dump.rdb" 
  3) "requirepass" 
  4) "" 
  5) "masterauth" 
  6) "" 
  7) "unixsocket" 
  8) "" 
  9) "logfile" 
 10) "" 
 11) "pidfile" 
 12) "/var/run/redis.pid" 
 13) "maxmemory" 
 14) "0"
 15) "maxmemory-samples" 
 16) "3" 
 17) "timeout" 
 18) "0" 
 19) "tcp-keepalive" 
 20) "0" 
 21) "auto-aof-rewrite-percentage" 
 22) "100" 
 23) "auto-aof-rewrite-min-size" 
 24) "67108864" 
 25) "hash-max-ziplist-entries" 
 26) "512" 
 27) "hash-max-ziplist-value" 
 28) "64" 
 29) "list-max-ziplist-entries" 
 30) "512" 
 31) "list-max-ziplist-value" 
 32) "64" 
 33) "set-max-intset-entries" 
 34) "512" 
 35) "zset-max-ziplist-entries" 
 36) "128" 
 37) "zset-max-ziplist-value" 
 38) "64" 
 39) "hll-sparse-max-bytes" 
 40) "3000" 
 41) "lua-time-limit" 
 42) "5000" 
 43) "slowlog-log-slower-than" 
 44) "10000" 
 45) "latency-monitor-threshold" 
 46) "0" 
 47) "slowlog-max-len" 
 48) "128" 
 49) "port" 
 50) "6379" 
 51) "tcp-backlog" 
 52) "511" 
 53) "databases" 
 54) "16" 
 55) "repl-ping-slave-period" 
 56) "10" 
 57) "repl-timeout" 
 58) "60" 
 59) "repl-backlog-size" 
 60) "1048576" 
 61) "repl-backlog-ttl" 
 62) "3600" 
 63) "maxclients" 
 64) "4064" 
 65) "watchdog-period" 
 66) "0" 
 67) "slave-priority" 
 68) "100" 
 69) "min-slaves-to-write" 
 70) "0" 
 71) "min-slaves-max-lag" 
 72) "10" 
 73) "hz" 
 74) "10" 
 75) "no-appendfsync-on-rewrite" 
 76) "no" 
 77) "slave-serve-stale-data" 
 78) "yes" 
 79) "slave-read-only" 
 80) "yes" 
 81) "stop-writes-on-bgsave-error" 
 82) "yes" 
 83) "daemonize" 
 84) "no" 
 85) "rdbcompression" 
 86) "yes"
 87) "rdbchecksum" 
 88) "yes" 
 89) "activerehashing" 
 90) "yes" 
 91) "repl-disable-tcp-nodelay" 
 92) "no" 
 93) "aof-rewrite-incremental-fsync" 
 94) "yes" 
 95) "appendonly" 
 96) "no" 
 97) "dir" 
 98) "/home/deepak/Downloads/redis-2.8.13/src" 
 99) "maxmemory-policy" 
100) "volatile-lru" 
101) "appendfsync" 
102) "everysec" 
103) "save" 
104) "3600 1 300 100 60 10000" 
105) "loglevel" 
106) "notice" 
107) "client-output-buffer-limit" 
108) "normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60" 
109) "unixsocketperm" 
110) "0" 
111) "slaveof" 
112) "" 
113) "notify-keyspace-events" 
114) "" 
115) "bind" 
116) ""

Editar configuración

Para actualizar la configuración, puede editar redis.conf archivo directamente o puede actualizar las configuraciones a través de CONFIG set mando.

Sintaxis

A continuación se muestra la sintaxis básica de CONFIG SET mando.

redis 127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE

Ejemplo

redis 127.0.0.1:6379> CONFIG SET loglevel "notice" 
OK 
redis 127.0.0.1:6379> CONFIG GET loglevel  
1) "loglevel" 
2) "notice"

Redis admite 5 tipos de tipos de datos.

Instrumentos de cuerda

La cadena de Redis es una secuencia de bytes. Las cadenas en Redis son binarias seguras, lo que significa que tienen una longitud conocida no determinada por ningún carácter de terminación especial. Por lo tanto, puede almacenar cualquier cosa hasta 512 megabytes en una cadena.

Ejemplo

redis 127.0.0.1:6379> SET name "tutorialspoint" 
OK 
redis 127.0.0.1:6379> GET name 
"tutorialspoint"

En el ejemplo anterior, SET y GET son los comandos de Redis, name es la clave utilizada en Redis y tutorialspoint es el valor de cadena que se almacena en Redis.

Note - Un valor de cadena puede tener una longitud máxima de 512 megabytes.

Hashes

Un hash de Redis es una colección de pares clave-valor. Redis Hashes son mapas entre campos de cadena y valores de cadena. Por tanto, se utilizan para representar objetos.

Ejemplo

redis 127.0.0.1:6379> HMSET user:1 username tutorialspoint password 
tutorialspoint points 200 
OK 
redis 127.0.0.1:6379> HGETALL user:1  
1) "username" 
2) "tutorialspoint" 
3) "password" 
4) "tutorialspoint" 
5) "points" 
6) "200"

En el ejemplo anterior, el tipo de datos hash se usa para almacenar el objeto del usuario que contiene información básica del usuario. aquíHMSET, HGETALL son comandos para Redis, mientras que user − 1 es la llave.

Cada hash puede almacenar hasta 2 32 - 1 pares de valor de campo (más de 4 mil millones).

Liza

Las listas de Redis son simplemente listas de cadenas, ordenadas por orden de inserción. Puede agregar elementos a una lista de Redis en la cabeza o en la cola.

Ejemplo

redis 127.0.0.1:6379> lpush tutoriallist redis 
(integer) 1 
redis 127.0.0.1:6379> lpush tutoriallist mongodb 
(integer) 2 
redis 127.0.0.1:6379> lpush tutoriallist rabitmq 
(integer) 3 
redis 127.0.0.1:6379> lrange tutoriallist 0 10  

1) "rabitmq" 
2) "mongodb" 
3) "redis"

La longitud máxima de una lista es 2 32 - 1 elementos (4294967295, más de 4 mil millones de elementos por lista).

Conjuntos

Los conjuntos de Redis son una colección desordenada de cadenas. En Redis, puede agregar, eliminar y probar la existencia de miembros en la complejidad de tiempo O (1).

Ejemplo

redis 127.0.0.1:6379> sadd tutoriallist redis 
(integer) 1 
redis 127.0.0.1:6379> sadd tutoriallist mongodb 
(integer) 1 
redis 127.0.0.1:6379> sadd tutoriallist rabitmq 
(integer) 1 
redis 127.0.0.1:6379> sadd tutoriallist rabitmq 
(integer) 0 
redis 127.0.0.1:6379> smembers tutoriallist  

1) "rabitmq" 
2) "mongodb" 
3) "redis"

Note - En el ejemplo anterior, rabitmq se agrega dos veces, sin embargo, debido a la propiedad única del conjunto, se agrega solo una vez.

El número máximo de miembros en un conjunto es 2 32 - 1 (4294967295, más de 4 mil millones de miembros por conjunto).

Conjuntos ordenados

Los conjuntos ordenados de Redis son similares a los conjuntos de Redis, colecciones de cadenas no repetidas. La diferencia es que cada miembro de un conjunto ordenado está asociado con una puntuación, que se utiliza para tomar el conjunto ordenado ordenado, desde la puntuación más pequeña hasta la más alta. Si bien los miembros son únicos, las puntuaciones pueden repetirse.

Ejemplo

redis 127.0.0.1:6379> zadd tutoriallist 0 redis 
(integer) 1 
redis 127.0.0.1:6379> zadd tutoriallist 0 mongodb 
(integer) 1 
redis 127.0.0.1:6379> zadd tutoriallist 0 rabitmq 
(integer) 1 
redis 127.0.0.1:6379> zadd tutoriallist 0 rabitmq 
(integer) 0 
redis 127.0.0.1:6379> ZRANGEBYSCORE tutoriallist 0 1000  

1) "redis" 
2) "mongodb" 
3) "rabitmq"

Los comandos de Redis se utilizan para realizar algunas operaciones en el servidor Redis.

Para ejecutar comandos en el servidor Redis, necesita un cliente Redis. El cliente de Redis está disponible en el paquete de Redis, que hemos instalado anteriormente.

Sintaxis

A continuación se muestra la sintaxis básica del cliente Redis.

$redis-cli

Ejemplo

El siguiente ejemplo explica cómo podemos iniciar el cliente Redis.

Para iniciar el cliente Redis, abra la terminal y escriba el comando redis-cli. Esto se conectará a su servidor local y ahora puede ejecutar cualquier comando.

$redis-cli 
redis 127.0.0.1:6379> 
redis 127.0.0.1:6379> PING  
PONG

En el ejemplo anterior, nos conectamos al servidor Redis que se ejecuta en la máquina local y ejecutamos un comando PING, que comprueba si el servidor se está ejecutando o no.

Ejecutar comandos en el servidor remoto

Para ejecutar comandos en el servidor remoto de Redis, debe conectarse al servidor por el mismo cliente redis-cli

Sintaxis

$ redis-cli -h host -p port -a password

Ejemplo

El siguiente ejemplo muestra cómo conectarse al servidor remoto de Redis, que se ejecuta en el host 127.0.0.1, puerto 6379 y tiene la contraseña mypass.

$redis-cli -h 127.0.0.1 -p 6379 -a "mypass" 
redis 127.0.0.1:6379> 
redis 127.0.0.1:6379> PING  
PONG

Los comandos de claves de Redis se utilizan para administrar claves en Redis. A continuación se muestra la sintaxis para usar los comandos de teclas de redis.

Sintaxis

redis 127.0.0.1:6379> COMMAND KEY_NAME

Ejemplo

redis 127.0.0.1:6379> SET tutorialspoint redis 
OK 
redis 127.0.0.1:6379> DEL tutorialspoint 
(integer) 1

En el ejemplo anterior, DEL es el comando, mientras tutorialspointes la llave. Si se elimina la clave, la salida del comando será (entero) 1, de lo contrario será (entero) 0.

Comandos de teclas de Redis

La siguiente tabla enumera algunos comandos básicos relacionados con las teclas.

No Señor Comando y descripción
1 Tecla DEL

Este comando elimina la clave, si existe.

2 DUMP clave

Este comando devuelve una versión serializada del valor almacenado en la clave especificada.

3 EXISTE clave

Este comando verifica si la clave existe o no.

4 EXPIRE segundos clave

Establece la caducidad de la clave después del tiempo especificado.

5 EXPIREAT marca de tiempo clave

Establece la caducidad de la clave después del tiempo especificado. Aquí el tiempo está en formato de marca de tiempo Unix.

6 Milisegundos clave PEXPIRE

Establezca la caducidad de la clave en milisegundos.

7 Clave PEXPIREAT milisegundos-marca de tiempo

Establece la caducidad de la clave en la marca de tiempo de Unix especificada en milisegundos.

8 Patrón de LLAVES

Encuentra todas las claves que coinciden con el patrón especificado.

9 MOVER tecla db

Mueve una clave a otra base de datos.

10 PERSIST clave

Elimina la caducidad de la clave.

11 Tecla PTTL

Obtiene el tiempo restante en caducidad de claves en milisegundos.

12 TTL clave

Obtiene el tiempo restante en caducidad de claves.

13 RANDOMKEY

Devuelve una clave aleatoria de Redis.

14 RENOMBRAR clave nueva clave

Cambia el nombre de la clave.

15 Llave RENAMENX nueva llave

Cambia el nombre de la clave, si no existe una nueva.

dieciséis TIPO de tecla

Devuelve el tipo de datos del valor almacenado en la clave.

Los comandos de cadenas de Redis se utilizan para administrar valores de cadenas en Redis. A continuación se muestra la sintaxis para usar los comandos de cadena de Redis.

Sintaxis

redis 127.0.0.1:6379> COMMAND KEY_NAME

Ejemplo

redis 127.0.0.1:6379> SET tutorialspoint redis 
OK 
redis 127.0.0.1:6379> GET tutorialspoint 
"redis"

En el ejemplo anterior, SET y GET son los comandos, mientras tutorialspoint es la llave.

Comandos de cadenas de Redis

La siguiente tabla enumera algunos comandos básicos para administrar cadenas en Redis.

No Señor Comando y descripción
1 SET valor clave

Este comando establece el valor en la clave especificada.

2 Obtener la clave

Obtiene el valor de una clave.

3 GETRANGE tecla inicio fin

Obtiene una subcadena de la cadena almacenada en una clave.

4 Valor de la clave GETSET

Establece el valor de cadena de una clave y devuelve su valor anterior.

5 Desplazamiento de clave GETBIT

Devuelve el valor de bit en el desplazamiento en el valor de cadena almacenado en la clave.

6 MGET key1 [key2 ..]

Obtiene los valores de todas las claves dadas

7 Valor de compensación de la tecla SETBIT

Establece o borra el bit en el desplazamiento en el valor de cadena almacenado en la tecla

8 Valor de segundos de la tecla SETEX

Establece el valor con el vencimiento de una clave

9 Valor de la clave SETNX

Establece el valor de una clave, solo si la clave no existe

10 Valor de compensación de la tecla SETRANGE

Sobrescribe la parte de una cadena en la clave que comienza en el desplazamiento especificado

11 Llave STRLEN

Obtiene la longitud del valor almacenado en una clave

12 Valor de clave MSET [valor de clave ...]

Establece múltiples claves para múltiples valores

13 Valor de clave MSETNX [valor de clave ...]

Establece varias claves para varios valores, solo si ninguna de las claves existe

14 Valor de milisegundos de clave PSETEX

Establece el valor y la caducidad en milisegundos de una clave.

15 Clave INCR

Incrementa el valor entero de una clave en uno

dieciséis Incremento de tecla INCRBY

Incrementa el valor entero de una clave en la cantidad dada

17 Incremento de la tecla INCRBYFLOAT

Incrementa el valor flotante de una clave en la cantidad dada

18 Tecla DECR

Disminuye el valor entero de una clave en uno.

19 Disminución de la tecla DECRBY

Disminuye el valor entero de una clave en el número dado

20 APENDER valor clave

Agrega un valor a una clave

Redis Hashes son mapas entre los campos de cadena y los valores de cadena. Por lo tanto, son el tipo de datos perfecto para representar objetos.

En Redis, cada hash puede almacenar hasta más de 4 mil millones de pares de valor de campo.

Ejemplo

redis 127.0.0.1:6379> HMSET tutorialspoint name "redis tutorial" 
description "redis basic commands for caching" likes 20 visitors 23000 
OK 
redis 127.0.0.1:6379> HGETALL tutorialspoint  
1) "name" 
2) "redis tutorial" 
3) "description" 
4) "redis basic commands for caching" 
5) "likes" 
6) "20" 
7) "visitors" 
8) "23000"

En el ejemplo anterior, hemos configurado el detalle de los tutoriales de Redis (nombre, descripción, me gusta, visitantes) en un hash llamado 'tutorialspoint'.

Comandos de hash de Redis

La siguiente tabla enumera algunos comandos básicos relacionados con el hash.

No Señor Comando y descripción
1 Campo de clave HDEL2 [campo2]

Elimina uno o más campos hash.

2 Campo clave HEXISTS

Determina si existe o no un campo hash.

3 Campo clave HGET

Obtiene el valor de un campo hash almacenado en la clave especificada.

4 Tecla HGETALL

Obtiene todos los campos y valores almacenados en un hash en la clave especificada

5 Incremento del campo clave HINCRBY

Incrementa el valor entero de un campo hash por el número dado

6 Incremento de campo de clave HINCRBYFLOAT

Incrementa el valor flotante de un campo hash en la cantidad dada

7 Tecla HKEYS

Obtiene todos los campos en un hash

8 Tecla HLEN

Obtiene el número de campos en un hash

9 Campo de clave HMGET1 [campo2]

Obtiene los valores de todos los campos hash dados

10 Clave HMSET campo1 valor1 [campo2 valor2]

Establece varios campos hash en varios valores

11 Valor del campo de clave HSET

Establece el valor de cadena de un campo hash

12 Valor del campo de clave HSETNX

Establece el valor de un campo hash, solo si el campo no existe

13 Clave HVALS

Obtiene todos los valores en un hash

14 Cursor de la tecla HSCAN [patrón MATCH] [COUNT count]

Itera incrementalmente los campos hash y los valores asociados

Las listas de Redis son simplemente listas de cadenas, ordenadas por orden de inserción. Puede agregar elementos en las listas de Redis al principio o al final de la lista.

La longitud máxima de una lista es 2 32 - 1 elementos (4294967295, más de 4 mil millones de elementos por lista).

Ejemplo

redis 127.0.0.1:6379> LPUSH tutorials redis 
(integer) 1 
redis 127.0.0.1:6379> LPUSH tutorials mongodb 
(integer) 2 
redis 127.0.0.1:6379> LPUSH tutorials mysql 
(integer) 3 
redis 127.0.0.1:6379> LRANGE tutorials 0 10  
1) "mysql" 
2) "mongodb" 
3) "redis"

En el ejemplo anterior, se insertan tres valores en la lista de Redis llamados 'tutoriales' por el comando LPUSH.

Comandos de listas de Redis

La siguiente tabla enumera algunos comandos básicos relacionados con las listas.

No Señor Comando y descripción
1 Tiempo de espera de BLPOP key1 [key2]

Elimina y obtiene el primer elemento de una lista, o bloquea hasta que haya uno disponible

2 Tiempo de espera de BRPOP key1 [key2]

Elimina y obtiene el último elemento de una lista, o bloquea hasta que haya uno disponible

3 BRPOPLPUSH tiempo de espera de destino de origen agotado

Saca un valor de una lista, lo empuja a otra lista y lo devuelve; o bloques hasta que haya uno disponible

4 Índice de claves LINDEX

Obtiene un elemento de una lista por su índice

5 Tecla LINSERT ANTES | DESPUÉS del valor de pivote

Inserta un elemento antes o después de otro elemento en una lista.

6 Llave LLEN

Obtiene la longitud de una lista

7 Llave LPOP

Elimina y obtiene el primer elemento de una lista.

8 Valor de clave LPUSH1 [valor2]

Añade uno o varios valores a una lista

9 Valor de la clave LPUSHX

Añade un valor a una lista, solo si la lista existe

10 LRANGE tecla inicio parada

Obtiene un rango de elementos de una lista

11 Valor de recuento de claves LREM

Elimina elementos de una lista

12 Valor de índice de clave LSET

Establece el valor de un elemento en una lista por su índice

13 LTRIM tecla inicio parada

Recorta una lista al rango especificado

14 Clave RPOP

Elimina y obtiene el último elemento de una lista.

15 Destino de origen RPOPLPUSH

Elimina el último elemento de una lista, lo agrega a otra lista y lo devuelve

dieciséis Valor de clave RPUSH1 [valor2]

Agrega uno o varios valores a una lista

17 Valor de la clave RPUSHX

Agrega un valor a una lista, solo si la lista existe

Los conjuntos de Redis son una colección desordenada de cadenas únicas. Los conjuntos de medios únicos no permiten la repetición de datos en una clave.

En el conjunto de Redis, agregue, elimine y pruebe la existencia de miembros en O (1) (tiempo constante independientemente del número de elementos contenidos dentro del conjunto). La longitud máxima de una lista es 2 32 - 1 elementos (4294967295, más de 4 mil millones de elementos por conjunto).

Ejemplo

redis 127.0.0.1:6379> SADD tutorials redis 
(integer) 1 
redis 127.0.0.1:6379> SADD tutorials mongodb 
(integer) 1 
redis 127.0.0.1:6379> SADD tutorials mysql 
(integer) 1 
redis 127.0.0.1:6379> SADD tutorials mysql 
(integer) 0 
redis 127.0.0.1:6379> SMEMBERS tutorials  
1) "mysql" 
2) "mongodb" 
3) "redis"

En el ejemplo anterior, se insertan tres valores en el conjunto de Redis llamados 'tutoriales' por el comando SADD.

Comandos de conjuntos de Redis

La siguiente tabla enumera algunos comandos básicos relacionados con los conjuntos.

No Señor Comando y descripción
1 Miembro clave de SADD1 [miembro2]

Agrega uno o más miembros a un conjunto

2 Tecla SCARD

Obtiene el número de miembros de un conjunto

3 SDIFF key1 [key2]

Resta varios conjuntos

4 SDIFFSTORE clave de destino 1 [clave2]

Resta varios conjuntos y almacena el conjunto resultante en una clave

5 SINTER key1 [key2]

Intersecta varios conjuntos

6 SINTERSTORE clave de destino 1 [clave2]

Intersecta varios conjuntos y almacena el conjunto resultante en una clave

7 Miembro clave de SISMEMBER

Determina si un valor dado es miembro de un conjunto

8 Clave SMEMBERS

Obtiene todos los miembros de un conjunto

9 Miembro de origen de destino SMOVE

Mueve un miembro de un conjunto a otro

10 Tecla SPOP

Elimina y devuelve un miembro aleatorio de un conjunto

11 Clave SRANDMEMBER [recuento]

Obtiene uno o varios miembros aleatorios de un conjunto

12 Miembro clave de SREM1 [miembro2]

Elimina uno o más miembros de un conjunto

13 SUNION key1 [key2]

Agrega varios conjuntos

14 SUNIONSTORE clave de destino 1 [clave2]

Agrega varios conjuntos y almacena el conjunto resultante en una clave

15 Cursor de tecla SSCAN [patrón MATCH] [COUNT count]

Itera incrementalmente los elementos del conjunto

Los conjuntos ordenados de Redis son similares a los conjuntos de Redis con la característica única de los valores almacenados en un conjunto. La diferencia es que cada miembro de un conjunto ordenado está asociado con una puntuación, que se utiliza para tomar el conjunto ordenado ordenado, desde la puntuación más pequeña hasta la más alta.

En el conjunto ordenado de Redis, agregue, elimine y pruebe la existencia de miembros en O (1) (tiempo constante independientemente de la cantidad de elementos contenidos dentro del conjunto). La longitud máxima de una lista es 2 32 - 1 elementos (4294967295, más de 4 mil millones de elementos por conjunto).

Ejemplo

redis 127.0.0.1:6379> ZADD tutorials 1 redis 
(integer) 1 
redis 127.0.0.1:6379> ZADD tutorials 2 mongodb 
(integer) 1 
redis 127.0.0.1:6379> ZADD tutorials 3 mysql 
(integer) 1 
redis 127.0.0.1:6379> ZADD tutorials 3 mysql 
(integer) 0 
redis 127.0.0.1:6379> ZADD tutorials 4 mysql 
(integer) 0 
redis 127.0.0.1:6379> ZRANGE tutorials 0 10 WITHSCORES  
1) "redis" 
2) "1" 
3) "mongodb" 
4) "2" 
5) "mysql" 
6) "4"

En el ejemplo anterior, se insertan tres valores con su puntuación en el conjunto ordenado de Redis denominado 'tutoriales' por el comando ZADD.

Comandos de conjuntos ordenados de Redis

La siguiente tabla enumera algunos comandos básicos relacionados con conjuntos ordenados.

No Señor Comando y descripción
1 ZADD clave score1 member1 [score2 member2]

Agrega uno o más miembros a un conjunto ordenado o actualiza su puntuación, si ya existe

2 Tecla ZCARD

Obtiene el número de miembros en un conjunto ordenado

3 ZCOUNT clave mínimo máximo

Cuenta los miembros en un conjunto ordenado con puntuaciones dentro de los valores dados

4 Miembro de incremento de clave ZINCRBY

Incrementa la puntuación de un miembro en un conjunto ordenado

5 Tecla de teclas numéricas de destino de ZINTERSTORE [tecla ...]

Intersecta múltiples conjuntos ordenados y almacena el conjunto ordenado resultante en una nueva clave

6 ZLEXCOUNT clave mínimo máximo

Cuenta el número de miembros en un conjunto ordenado entre un rango lexicográfico dado

7 Inicio de la tecla ZRANGE parada [WITHSCORES]

Devuelve un rango de miembros en un conjunto ordenado, por índice.

8 Tecla ZRANGEBYLEX mín máx. [LIMIT recuento de compensación]

Devuelve un rango de miembros en un conjunto ordenado, por rango lexicográfico.

9 Tecla ZRANGEBYSCORE mín máx. [WITHSCORES] [LIMIT]

Devuelve un rango de miembros en un conjunto ordenado, por puntuación.

10 Miembro clave de ZRANK

Determina el índice de un miembro en un conjunto ordenado

11 Miembro clave de ZREM [miembro ...]

Elimina uno o más miembros de un conjunto ordenado

12 Tecla ZREMRANGEBYLEX min max

Elimina todos los miembros en un conjunto ordenado entre el rango lexicográfico dado

13 ZREMRANGEBYRANK tecla inicio parada

Elimina todos los miembros de un conjunto ordenado dentro de los índices dados

14 Tecla ZREMRANGEBYSCORE min max

Elimina todos los miembros de un conjunto ordenado dentro de las puntuaciones dadas

15 Inicio de la tecla ZREVRANGE parada [WITHSCORES]

Devuelve un rango de miembros en un conjunto ordenado, por índice, con puntuaciones ordenadas de mayor a menor

dieciséis Clave ZREVRANGEBYSCORE mín. Máx. [WITHSCORES]

Devuelve un rango de miembros en un conjunto ordenado, por puntaje, con puntajes ordenados de mayor a menor

17 Miembro clave de ZREVRANK

Determina el índice de un miembro en un conjunto ordenado, con puntuaciones ordenadas de mayor a menor

18 Miembro clave de ZSCORE

Obtiene la puntuación asociada con el miembro dado en un conjunto ordenado

19 Tecla de teclas numéricas de destino de ZUNIONSTORE [tecla ...]

Agrega varios conjuntos ordenados y almacena el conjunto ordenado resultante en una nueva clave

20 Cursor de la tecla ZSCAN [MATCH pattern] [COUNT count]

Itera de forma incremental elementos de conjuntos ordenados y puntuaciones asociadas

Redis HyperLogLog es un algoritmo que utiliza la aleatorización para proporcionar una aproximación del número de elementos únicos en un conjunto utilizando solo una cantidad pequeña y constante de memoria.

HyperLogLog proporciona una muy buena aproximación de la cardinalidad de un conjunto incluso utilizando una cantidad muy pequeña de memoria de alrededor de 12 kbytes por clave con un error estándar del 0,81%. No hay límite para la cantidad de elementos que puede contar, a menos que se acerque a 2 64 elementos.

Ejemplo

El siguiente ejemplo explica cómo funciona Redis HyperLogLog.

redis 127.0.0.1:6379> PFADD tutorials "redis"  
1) (integer) 1  
redis 127.0.0.1:6379> PFADD tutorials "mongodb"  
1) (integer) 1  
redis 127.0.0.1:6379> PFADD tutorials "mysql"  
1) (integer) 1  
redis 127.0.0.1:6379> PFCOUNT tutorials  
(integer) 3

Comandos de Redis HyperLogLog

La siguiente tabla enumera algunos comandos básicos relacionados con Redis HyperLogLog.

No Señor Comando y descripción
1 Elemento clave de PFADD [elemento ...]

Agrega los elementos especificados al HyperLogLog especificado.

2 Tecla PFCOUNT [clave ...]

Devuelve la cardinalidad aproximada de los conjuntos observados por HyperLogLog en la (s) clave (s).

3 PFMERGE destkey sourcekey [sourcekey ...]

Fusiona N diferentes HyperLogLogs en uno solo.

Redis Pub / Sub implementa el sistema de mensajería donde los remitentes (en la terminología de redis llamados editores) envían los mensajes mientras los receptores (suscriptores) los reciben. El enlace por el cual se transfieren los mensajes se llamachannel.

En Redis, un cliente puede suscribirse a cualquier número de canales.

Ejemplo

El siguiente ejemplo explica cómo funciona el concepto de publicación de suscriptores. En el siguiente ejemplo, un cliente se suscribe a un canal llamado 'redisChat'.

redis 127.0.0.1:6379> SUBSCRIBE redisChat  
Reading messages... (press Ctrl-C to quit) 
1) "subscribe" 
2) "redisChat" 
3) (integer) 1

Ahora, dos clientes están publicando los mensajes en el mismo canal llamado 'redisChat' y el cliente suscrito anterior está recibiendo mensajes.

redis 127.0.0.1:6379> PUBLISH redisChat "Redis is a great caching technique"  
(integer) 1  
redis 127.0.0.1:6379> PUBLISH redisChat "Learn redis by tutorials point"  
(integer) 1   
1) "message" 
2) "redisChat" 
3) "Redis is a great caching technique" 
1) "message" 
2) "redisChat" 
3) "Learn redis by tutorials point"

Comandos de Redis PubSub

La siguiente tabla enumera algunos comandos básicos relacionados con Redis Pub / Sub.

No Señor Comando y descripción
1 Patrón PSUBSCRIBE [patrón ...]

Se suscribe a canales que coinciden con los patrones dados.

2 Subcomando PUBSUB [argumento [argumento ...]]

Indica el estado del sistema Pub / Sub. Por ejemplo, qué clientes están activos en el servidor.

3 PUBLICAR mensaje de canal

Publica un mensaje en un canal.

4 PUNSUBSCRIBE [patrón [patrón ...]]

Deja de escuchar mensajes publicados en canales que coinciden con los patrones dados.

5 SUBSCRIBE canal [canal ...]

Escucha los mensajes publicados en los canales indicados.

6 UNSUBSCRIBE [canal [canal ...]]

Deja de escuchar los mensajes publicados en los canales indicados.

Las transacciones de Redis permiten la ejecución de un grupo de comandos en un solo paso. A continuación se muestran las dos propiedades de las transacciones.

  • Todos los comandos de una transacción se ejecutan secuencialmente como una única operación aislada. No es posible que una solicitud emitida por otro cliente sea atendida en medio de la ejecución de una transacción de Redis.

  • La transacción de Redis también es atómica. Atómico significa que se procesan todos los comandos o ninguno.

Muestra

La transacción de Redis se inicia mediante un comando MULTI y luego debe pasar una lista de comandos que deben ejecutarse en la transacción, después de lo cual la transacción completa es ejecutada por EXEC mando.

redis 127.0.0.1:6379> MULTI 
OK 
List of commands here 
redis 127.0.0.1:6379> EXEC

Ejemplo

El siguiente ejemplo explica cómo se puede iniciar y ejecutar la transacción de Redis.

redis 127.0.0.1:6379> MULTI 
OK 
redis 127.0.0.1:6379> SET tutorial redis 
QUEUED 
redis 127.0.0.1:6379> GET tutorial 
QUEUED 
redis 127.0.0.1:6379> INCR visitors 
QUEUED 
redis 127.0.0.1:6379> EXEC  
1) OK 
2) "redis" 
3) (integer) 1

Comandos de transacción de Redis

La siguiente tabla muestra algunos comandos básicos relacionados con las transacciones de Redis.

No Señor Comando y descripción
1 DESCARTE

Descarta todos los comandos emitidos después de MULTI

2 EXEC

Ejecuta todos los comandos emitidos después de MULTI

3 MULTI

Marca el inicio de un bloque de transacciones

4 UNWATCH

Olvida todas las claves vigiladas

5 Tecla WATCH [clave ...]

Observa las claves dadas para determinar la ejecución del bloque MULTI / EXEC

Las secuencias de comandos de Redis se utilizan para evaluar las secuencias de comandos utilizando el intérprete de Lua. Está integrado en Redis a partir de la versión 2.6.0. El comando utilizado para la creación de scripts esEVAL mando.

Sintaxis

A continuación se muestra la sintaxis básica de EVAL mando.

redis 127.0.0.1:6379> EVAL script numkeys key [key ...] arg [arg ...]

Ejemplo

El siguiente ejemplo explica cómo funciona la secuencia de comandos de Redis.

redis 127.0.0.1:6379> EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 
key2 first second  
1) "key1" 
2) "key2" 
3) "first" 
4) "second"

Comandos de secuencias de comandos de Redis

La siguiente tabla enumera algunos comandos básicos relacionados con Redis Scripting.

No Señor Comando y descripción
1 EVAL script numkeys key [key ...] arg [arg ...]

Ejecuta un script de Lua.

2 EVALSHA sha1 numkeys key [key ...] arg [arg ...]

Ejecuta un script de Lua.

3 SCRIPT EXISTS script [script ...]

Comprueba la existencia de scripts en la caché de scripts.

4 BORRAR GUIÓN

Elimina todos los scripts de la caché de scripts.

5 MATAR GUIÓN

Mata el script actualmente en ejecución.

6 Secuencia de comandos SCRIPT LOAD

Carga el script Lua especificado en la caché de script.

Los comandos de conexión de Redis se utilizan básicamente para administrar las conexiones de los clientes con el servidor de Redis.

Ejemplo

El siguiente ejemplo explica cómo un cliente se autentica en el servidor Redis y comprueba si el servidor se está ejecutando o no.

redis 127.0.0.1:6379> AUTH "password" 
OK 
redis 127.0.0.1:6379> PING 
PONG

Comandos de conexión de Redis

La siguiente tabla enumera algunos comandos básicos relacionados con las conexiones de Redis.

No Señor Comando y descripción
1 AUTH contraseña

Se autentica en el servidor con la contraseña dada.

2 Mensaje de ECHO

Imprime la cadena dada

3 SILBIDO

Comprueba si el servidor está funcionando o no

4 DEJAR

Cierra la conexión actual

5 SELECCIONAR índice

Cambia la base de datos seleccionada para la conexión actual

Los comandos del servidor Redis se utilizan básicamente para administrar el servidor Redis.

Ejemplo

El siguiente ejemplo explica cómo podemos obtener todas las estadísticas e información sobre el servidor.

redis 127.0.0.1:6379> INFO  

# Server 
redis_version:2.8.13 
redis_git_sha1:00000000 
redis_git_dirty:0 
redis_build_id:c2238b38b1edb0e2 
redis_mode:standalone 
os:Linux 3.5.0-48-generic x86_64 
arch_bits:64 
multiplexing_api:epoll 
gcc_version:4.7.2 
process_id:3856 
run_id:0e61abd297771de3fe812a3c21027732ac9f41fe 
tcp_port:6379 
uptime_in_seconds:11554 
uptime_in_days:0 hz:10 
lru_clock:16651447 
config_file:  

# Clients 
connected_clients:1
client_longest_output_list:0 
client_biggest_input_buf:0 
blocked_clients:0  

# Memory 
used_memory:589016 
used_memory_human:575.21K 
used_memory_rss:2461696 
used_memory_peak:667312 
used_memory_peak_human:651.67K 
used_memory_lua:33792 
mem_fragmentation_ratio:4.18 
mem_allocator:jemalloc-3.6.0  

# Persistence 
loading:0 
rdb_changes_since_last_save:3 
rdb_bgsave_in_progress:0 
rdb_last_save_time:1409158561 
rdb_last_bgsave_status:ok 
rdb_last_bgsave_time_sec:0 
rdb_current_bgsave_time_sec:-1 
aof_enabled:0 
aof_rewrite_in_progress:0 
aof_rewrite_scheduled:0 
aof_last_rewrite_time_sec:-1 
aof_current_rewrite_time_sec:-1 
aof_last_bgrewrite_status:ok 
aof_last_write_status:ok  

# Stats 
total_connections_received:24 
total_commands_processed:294 
instantaneous_ops_per_sec:0 
rejected_connections:0 
sync_full:0 
sync_partial_ok:0 
sync_partial_err:0 
expired_keys:0 
evicted_keys:0 
keyspace_hits:41
keyspace_misses:82 
pubsub_channels:0 
pubsub_patterns:0 
latest_fork_usec:264  

# Replication 
role:master 
connected_slaves:0 
master_repl_offset:0 
repl_backlog_active:0 
repl_backlog_size:1048576 
repl_backlog_first_byte_offset:0 
repl_backlog_histlen:0  

# CPU 
used_cpu_sys:10.49 
used_cpu_user:4.96 
used_cpu_sys_children:0.00 
used_cpu_user_children:0.01  

# Keyspace 
db0:keys = 94,expires = 1,avg_ttl = 41638810 
db1:keys = 1,expires = 0,avg_ttl = 0 
db3:keys = 1,expires = 0,avg_ttl = 0

Comandos del servidor Redis

La siguiente tabla enumera algunos comandos básicos relacionados con el servidor Redis.

No Señor Comando y descripción
1 BGREWRITEAOF

Reescribe de forma asincrónica el archivo de solo anexo

2 BGSAVE

Guarda de forma asincrónica el conjunto de datos en el disco

3 CLIENTE KILL [ip: puerto] [ID ID de cliente]

Mata la conexión de un cliente

4 LISTA DE CLIENTES

Obtiene la lista de conexiones de cliente al servidor

5 CLIENT GETNAME

Obtiene el nombre de la conexión actual

6 Tiempo de espera de CLIENT PAUSE

Detiene el procesamiento de comandos de los clientes durante un tiempo específico

7 CLIENT SETNAME nombre-conexión

Establece el nombre de la conexión actual

8 RANURAS DE CLÚSTER

Obtiene una matriz de asignaciones de ranuras a nodos de clúster

9 MANDO

Obtiene una matriz de detalles del comando de Redis

10 CUENTA DE COMANDOS

Obtiene el número total de comandos de Redis

11 COMANDO GETKEYS

Extrae las claves con un comando completo de Redis

12 BGSAVE

Guarda de forma asincrónica el conjunto de datos en el disco

13 COMMAND INFO nombre-comando [nombre-comando ...]

Obtiene una serie de detalles específicos del comando de Redis

14 Parámetro CONFIG GET

Obtiene el valor de un parámetro de configuración

15 CONFIG REESCRIBIR

Reescribe el archivo de configuración con la configuración en memoria.

dieciséis CONFIG SET valor del parámetro

Establece un parámetro de configuración al valor dado

17 CONFIG RESETSTAT

Restablece las estadísticas devueltas por INFO

18 DBSIZE

Devuelve el número de claves en la base de datos seleccionada.

19 Tecla DEBUG OBJECT

Obtiene información de depuración sobre una clave

20 SEGFAULT DE DEPURACIÓN

Hace que el servidor se bloquee

21 FLUSHALL

Elimina todas las claves de todas las bases de datos

22 FLUSHDB

Elimina todas las claves de la base de datos actual

23 INFO [sección]

Obtiene información y estadísticas sobre el servidor

24 ÚLTIMA GUARDAR

Obtiene la marca de tiempo UNIX del último guardado exitoso en el disco

25 MONITOR

Escucha todas las solicitudes recibidas por el servidor en tiempo real

26 PAPEL

Devuelve el rol de la instancia en el contexto de la replicación.

27 SALVAR

Guarda sincrónicamente el conjunto de datos en el disco

28 APAGAR [NOSAVE] [GUARDAR]

Guarda sincrónicamente el conjunto de datos en el disco y luego apaga el servidor

29 Puerto de host SLAVEOF

Hace que el servidor sea esclavo de otra instancia o lo promueve como maestro

30 Subcomando SLOWLOG [argumento]

Administra el registro de consultas lentas de Redis

31 SINCRONIZAR

Comando utilizado para la replicación

32 HORA

Devuelve la hora actual del servidor

Redis SAVE El comando se utiliza para crear una copia de seguridad de la base de datos actual de Redis.

Sintaxis

A continuación se muestra la sintaxis básica de redis SAVE mando.

127.0.0.1:6379> SAVE

Ejemplo

El siguiente ejemplo crea una copia de seguridad de la base de datos actual.

127.0.0.1:6379> SAVE  
OK

Este comando creará un dump.rdb archivo en su directorio de Redis.

Restaurar datos de Redis

Para restaurar los datos de Redis, mueva el archivo de respaldo de Redis (dump.rdb) a su directorio de Redis e inicie el servidor. Para obtener su directorio de Redis, useCONFIG comando de Redis como se muestra a continuación.

127.0.0.1:6379> CONFIG get dir  
1) "dir" 
2) "/user/tutorialspoint/redis-2.8.13/src"

En la salida del comando anterior /user/tutorialspoint/redis-2.8.13/src es el directorio donde está instalado el servidor Redis.

Bgsave

Para crear una copia de seguridad de Redis, un comando alternativo BGSAVEtambién está disponible. Este comando iniciará el proceso de copia de seguridad y lo ejecutará en segundo plano.

Ejemplo

127.0.0.1:6379> BGSAVE  
Background saving started

La base de datos de Redis se puede proteger, de modo que cualquier cliente que realice una conexión debe autenticarse antes de ejecutar un comando. Para proteger Redis, debe establecer la contraseña en el archivo de configuración.

Ejemplo

El siguiente ejemplo muestra los pasos para proteger su instancia de Redis.

127.0.0.1:6379> CONFIG get requirepass 
1) "requirepass" 
2) ""

De forma predeterminada, esta propiedad está en blanco, lo que significa que no se establece ninguna contraseña para esta instancia. Puede cambiar esta propiedad ejecutando el siguiente comando.

127.0.0.1:6379> CONFIG set requirepass "tutorialspoint" 
OK 
127.0.0.1:6379> CONFIG get requirepass 
1) "requirepass" 
2) "tutorialspoint"

Después de configurar la contraseña, si algún cliente ejecuta el comando sin autenticación, entonces (error) NOAUTH Authentication required. el error volverá. Por tanto, el cliente debe utilizarAUTH comando para autenticarse a sí mismo.

Sintaxis

A continuación se muestra la sintaxis básica de AUTH mando.

127.0.0.1:6379> AUTH password

Ejemplo

127.0.0.1:6379> AUTH "tutorialspoint" 
OK 
127.0.0.1:6379> SET mykey "Test value" 
OK 
127.0.0.1:6379> GET mykey 
"Test value"

El punto de referencia de Redis es la utilidad para verificar el rendimiento de Redis ejecutando n comandos simultáneamente.

Sintaxis

A continuación se muestra la sintaxis básica de la prueba comparativa de Redis.

redis-benchmark [option] [option value]

Ejemplo

El siguiente ejemplo verifica Redis llamando a 100000 comandos.

redis-benchmark -n 100000  

PING_INLINE: 141043.72 requests per second 
PING_BULK: 142857.14 requests per second 
SET: 141442.72 requests per second 
GET: 145348.83 requests per second 
INCR: 137362.64 requests per second 
LPUSH: 145348.83 requests per second 
LPOP: 146198.83 requests per second 
SADD: 146198.83 requests per second 
SPOP: 149253.73 requests per second 
LPUSH (needed to benchmark LRANGE): 148588.42 requests per second 
LRANGE_100 (first 100 elements): 58411.21 requests per second 
LRANGE_300 (first 300 elements): 21195.42 requests per second 
LRANGE_500 (first 450 elements): 14539.11 requests per second 
LRANGE_600 (first 600 elements): 10504.20 requests per second 
MSET (10 keys): 93283.58 requests per second

A continuación se muestra una lista de opciones disponibles en la prueba comparativa de Redis.

No Señor Opción Descripción Default Value
1 -h Specifies server host name 127.0.0.1
2 -p Specifies server port 6379
3 -s Specifies server socket
4 -c Specifies the number of parallel connections 50
5 -n Specifies the total number of requests 10000
6 -d Specifies data size of SET/GET value in bytes 2
7 -k 1=keep alive, 0=reconnect 1
8 -r Use random keys for SET/GET/INCR, random values for SADD
9 -p Pipeline <numreq> requests 1
10 -h Specifies server host name
11 -q Forces Quiet to Redis. Just shows query/sec values
12 --csv Output in CSV format
13 -l Generates loop, Run the tests forever
14 -t Only runs the comma-separated list of tests
15 -I Idle mode. Just opens N idle connections and wait

Example

Following example shows the multiple usage options in Redis benchmark utility.

redis-benchmark -h 127.0.0.1 -p 6379 -t set,lpush -n 100000 -q  

SET: 146198.83 requests per second 
LPUSH: 145560.41 requests per second

Redis accepts clients’ connections on the configured listening TCP port and on the Unix socket, if enabled. When a new client connection is accepted, the following operations are performed −

  • The client socket is put in non-blocking state since Redis uses multiplexing and non-blocking I/O.

  • The TCP_NODELAY option is set in order to ensure that we don't have delays in our connection.

  • A readable file event is created so that Redis is able to collect the client queries as soon as new data is available to be read on the socket.

Maximum Number of Clients

In Redis config (redis.conf), there is a property called maxclients, which describes the maximum number of clients that can connect to Redis.

Following is the basic syntax of command.

config get maxclients  

1) "maxclients" 
2) "10000"

By default, this property is set to 10000 (depending upon the maximum number of file descriptors limit of OS), although you can change this property.

Example

In the following example, we have set the maximum number of clients to 100000, while starting the server.

redis-server --maxclients 100000

Client Commands

Sr.No Command Description
1 CLIENT LIST Returns the list of clients connected to Redis server
2 CLIENT SETNAME Assigns a name to the current connection
3 CLIENT GETNAME Returns the name of the current connection as set by CLIENT SETNAME
4 CLIENT PAUSE This is a connections control command able to suspend all the Redis clients for the specified amount of time (in milliseconds)
5 CLIENT KILL This command closes a given client connection.

Redis is a TCP server and supports request/response protocol. In Redis, a request is accomplished with the following steps −

  • The client sends a query to the server, and reads from the socket, usually in a blocking way, for the server response.

  • The server processes the command and sends the response back to the client.

Meaning of Pipelining

The basic meaning of pipelining is, the client can send multiple requests to the server without waiting for the replies at all, and finally reads the replies in a single step.

Ejemplo

Para verificar la canalización de Redis, simplemente inicie la instancia de Redis y escriba el siguiente comando en la terminal.

$(echo -en "PING\r\n SET tutorial redis\r\nGET tutorial\r\nINCR 
visitor\r\nINCR visitor\r\nINCR visitor\r\n"; sleep 10) | nc localhost 6379  
+PONG 
+OK 
redis 
:1 
:2 
:3

En el ejemplo anterior, verificaremos la conexión de Redis usando PINGmando. Hemos establecido una cadena llamadatutorial con valor redis. Más tarde, obtenemos ese valor de claves e incrementamos el número de visitantes tres veces. En el resultado, podemos ver que todos los comandos se envían a Redis una vez y Redis proporciona la salida de todos los comandos en un solo paso.

Beneficios de la canalización

El beneficio de esta técnica es un rendimiento de protocolo drásticamente mejorado. La aceleración obtenida mediante la canalización varía desde un factor de cinco para las conexiones a localhost hasta un factor de al menos cien en conexiones a Internet más lentas.

El particionamiento es el proceso de dividir sus datos en varias instancias de Redis, de modo que cada instancia solo contendrá un subconjunto de sus claves.

Beneficios del particionamiento

  • Permite bases de datos mucho más grandes, utilizando la suma de la memoria de muchas computadoras. Sin particiones, está limitado a la cantidad de memoria que puede admitir una sola computadora.

  • Permite escalar la potencia computacional a múltiples núcleos y múltiples computadoras, y el ancho de banda de la red a múltiples computadoras y adaptadores de red.

Desventajas del particionamiento

  • Las operaciones que involucran varias claves generalmente no son compatibles. Por ejemplo, no puede realizar la intersección entre dos conjuntos si están almacenados en las claves que están asignadas a diferentes instancias de Redis.

  • No se pueden utilizar transacciones de Redis que involucren varias claves.

  • El granuliario de particiones es la clave, por lo que no es posible fragmentar un conjunto de datos con una sola clave enorme como un conjunto ordenado muy grande.

  • Cuando se utiliza la partición, el manejo de datos es más complejo. Por ejemplo, debe manejar varios archivos RDB / AOF y, para obtener una copia de seguridad de sus datos, debe agregar los archivos de persistencia de varias instancias y hosts.

  • Agregar y eliminar la capacidad puede ser complejo. Por ejemplo, Redis Cluster admite el reequilibrio de datos principalmente transparente con la capacidad de agregar y eliminar nodos en tiempo de ejecución. Sin embargo, otros sistemas como las particiones del lado del cliente y los servidores proxy no admiten esta función. Una técnica llamadaPresharding ayuda en este sentido.

Tipos de particionamiento

Hay dos tipos de particiones disponibles en Redis. Supongamos que tenemos cuatro instancias de Redis, R0, R1, R2, R3 y muchas claves que representan usuarios como usuario: 1, usuario: 2, ... y así sucesivamente.

Partición de rango

La partición de rango se logra asignando rangos de objetos a instancias específicas de Redis. Supongamos en nuestro ejemplo, los usuarios de ID 0 a ID 10000 irán a la instancia R0, mientras que los usuarios de ID 10001 a ID 20000 irán a la instancia R1 y así sucesivamente.

Partición hash

En este tipo de partición, se usa una función hash (por ejemplo, función de módulo) para convertir la clave en un número y luego los datos se almacenan en instancias de Redis diferentes y diferentes.

Antes de comenzar a usar Redis en sus programas Java, debe asegurarse de tener el controlador Java de Redis y Java configurado en la máquina. Puede consultar nuestro tutorial de Java para la instalación de Java en su máquina.

Instalación

Ahora, veamos cómo configurar el controlador Java de Redis.

  • Necesitas descargar el tarro de la ruta. Download jedis.jar. Asegúrate de descargar la última versión.

  • Necesitas incluir el jedis.jar en tu classpath.

Conectarse al servidor Redis

import redis.clients.jedis.Jedis; 

public class RedisJava { 
   public static void main(String[] args) { 
      //Connecting to Redis server on localhost 
      Jedis jedis = new Jedis("localhost"); 
      System.out.println("Connection to server sucessfully"); 
      //check whether server is running or not 
      System.out.println("Server is running: "+jedis.ping()); 
   } 
}

Ahora, compilemos y ejecutemos el programa anterior para probar la conexión al servidor Redis. Puede cambiar su ruta según sus necesidades. Estamos asumiendo la versión actual dejedis.jar está disponible en la ruta actual.

$javac RedisJava.java 
$java RedisJava 
Connection to server sucessfully 
Server is running: PONG

Ejemplo de cadena Java de Redis

import redis.clients.jedis.Jedis; 

public class RedisStringJava { 
   public static void main(String[] args) { 
      //Connecting to Redis server on localhost 
      Jedis jedis = new Jedis("localhost"); 
      System.out.println("Connection to server sucessfully"); 
      //set the data in redis string 
      jedis.set("tutorial-name", "Redis tutorial"); 
      // Get the stored data and print it 
      System.out.println("Stored string in redis:: "+ jedis.get("tutorialname")); 
   } 
}

Ahora, compilemos y ejecutemos el programa anterior.

$javac RedisStringJava.java 
$java RedisStringJava 
Connection to server sucessfully 
Stored string in redis:: Redis tutorial

Ejemplo de lista de Java de Redis

import redis.clients.jedis.Jedis; 

public class RedisListJava { 
   public static void main(String[] args) { 
   
      //Connecting to Redis server on localhost 
      Jedis jedis = new Jedis("localhost"); 
      System.out.println("Connection to server sucessfully"); 
      
      //store data in redis list 
      jedis.lpush("tutorial-list", "Redis"); 
      jedis.lpush("tutorial-list", "Mongodb"); 
      jedis.lpush("tutorial-list", "Mysql"); 
      // Get the stored data and print it 
      List<String> list = jedis.lrange("tutorial-list", 0 ,5); 
      
      for(int i = 0; i<list.size(); i++) { 
         System.out.println("Stored string in redis:: "+list.get(i)); 
      } 
   } 
}

Ahora, compilemos y ejecutemos el programa anterior.

$javac RedisListJava.java 
$java RedisListJava 
Connection to server sucessfully 
Stored string in redis:: Redis 
Stored string in redis:: Mongodb 
Stored string in redis:: Mysql

Ejemplo de claves Java de Redis

import redis.clients.jedis.Jedis; 

public class RedisKeyJava { 
   public static void main(String[] args) { 
   
      //Connecting to Redis server on localhost 
      Jedis jedis = new Jedis("localhost"); 
      System.out.println("Connection to server sucessfully"); 
      //store data in redis list 
      // Get the stored data and print it 
      List<String> list = jedis.keys("*"); 
      
      for(int i = 0; i<list.size(); i++) { 
         System.out.println("List of stored keys:: "+list.get(i)); 
      } 
   } 
}

Ahora, compilemos y ejecutemos el programa anterior.

$javac RedisKeyJava.java 
$java RedisKeyJava 
Connection to server sucessfully 
List of stored keys:: tutorial-name 
List of stored keys:: tutorial-list

Antes de comenzar a usar Redis en sus programas PHP, debe asegurarse de tener el controlador PHP de Redis y PHP configurado en la máquina. Puede consultar el tutorial de PHP para la instalación de PHP en su máquina.

Instalación

Ahora, veamos cómo configurar el controlador PHP de Redis.

Necesitas descargar phpredis del repositorio de github https://github.com/nicolasff/phpredis. Una vez que lo haya descargado, extraiga los archivos al directorio phpredis. En Ubuntu, instale la siguiente extensión.

cd phpredis 
sudo phpize 
sudo ./configure 
sudo make 
sudo make install

Ahora, copie y pegue el contenido de la carpeta "módulos" en el directorio de extensión de PHP y agregue las siguientes líneas en php.ini.

extension = redis.so

Ahora, su instalación PHP de Redis está completa

Conectarse al servidor Redis

<?php 
   //Connecting to Redis server on localhost 
   $redis = new Redis(); 
   $redis->connect('127.0.0.1', 6379); echo "Connection to server sucessfully"; //check whether server is running or not echo "Server is running: ".$redis->ping(); 
?>

Cuando se ejecuta el programa, producirá el siguiente resultado.

Connection to server sucessfully 
Server is running: PONG

Ejemplo de cadena PHP de Redis

<?php 
   //Connecting to Redis server on localhost 
   $redis = new Redis(); $redis->connect('127.0.0.1', 6379); 
   echo "Connection to server sucessfully"; 
   //set the data in redis string 
   $redis->set("tutorial-name", "Redis tutorial"); // Get the stored data and print it echo "Stored string in redis:: " .$redis→get("tutorial-name"); 
?>

Cuando se ejecuta el programa anterior, producirá el siguiente resultado.

Connection to server sucessfully 
Stored string in redis:: Redis tutorial

Ejemplo de lista de PHP de Redis

<?php 
   //Connecting to Redis server on localhost 
   $redis = new Redis(); $redis->connect('127.0.0.1', 6379); 
   echo "Connection to server sucessfully"; 
   //store data in redis list 
   $redis->lpush("tutorial-list", "Redis"); $redis->lpush("tutorial-list", "Mongodb"); 
   $redis->lpush("tutorial-list", "Mysql"); // Get the stored data and print it $arList = $redis->lrange("tutorial-list", 0 ,5); echo "Stored string in redis:: "; print_r($arList); 
?>

Cuando se ejecuta el programa anterior, producirá el siguiente resultado.

Connection to server sucessfully 
Stored string in redis:: 
Redis 
Mongodb 
Mysql

Ejemplo de claves PHP de Redis

<?php 
   //Connecting to Redis server on localhost 
   $redis = new Redis(); $redis->connect('127.0.0.1', 6379); 
   echo "Connection to server sucessfully"; 
   // Get the stored keys and print it 
   $arList = $redis->keys("*"); 
   echo "Stored keys in redis:: " 
   print_r($arList); 
?>

Cuando se ejecuta el programa, producirá el siguiente resultado.

Connection to server sucessfully 
Stored string in redis:: 
tutorial-name 
tutorial-list