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