Redis Avanzada - cómo encontrar y tratamiento elegante cosa BigKey doce

Aquí Insertar imagen Descripción


Avance

Avanzada -Redis Redis problemas de diseño clave y BigKey áspera discuten BigKey, donde seguimos a venir a estudiar en BigKey

Redis Versión: 5.0.3


Analógico escribir BigKey

Aquí Insertar imagen Descripción

Aquí Insertar imagen Descripción


¿Cómo encontrar BigKey

Nada más que resumir algunos puntos

  • registro excepción de aplicación (que no se ve directamente de la palabra clave de registro, porque después de esto bigkey bloqueado, dará lugar a algunas preguntas extrañas, tales como el acceso a no ver la conexión de la agrupación de conexiones, etc.)
  • --bigkeys Redis-CLI
  • Sistema de monitoreo de informe
  • Otros ...

--bigkeys Redis-CLI

mirada Redis-cli en qué parámetros son compatibles

[redis@artisan bin]$ ./redis-cli --help
redis-cli 5.0.3

Usage: redis-cli [OPTIONS] [cmd [arg [arg ...]]]
  -h <hostname>      Server hostname (default: 127.0.0.1).
  -p <port>          Server port (default: 6379).
  -s <socket>        Server socket (overrides hostname and port).
  -a <password>      Password to use when connecting to the server.
                     You can also use the REDISCLI_AUTH environment
                     variable to pass this password more safely
                     (if both are used, this argument takes predecence).
  -u <uri>           Server URI.
  -r <repeat>        Execute specified command N times.
  -i <interval>      When -r is used, waits <interval> seconds per command.
                     It is possible to specify sub-second times like -i 0.1.
  -n <db>            Database number.
  -x                 Read last argument from STDIN.
  -d <delimiter>     Multi-bulk delimiter in for raw formatting (default: \n).
  -c                 Enable cluster mode (follow -ASK and -MOVED redirections).
  --raw              Use raw formatting for replies (default when STDOUT is
                     not a tty).
  --no-raw           Force formatted output even when STDOUT is not a tty.
  --csv              Output in CSV format.
  --stat             Print rolling stats about server: mem, clients, ...
  --latency          Enter a special mode continuously sampling latency.
                     If you use this mode in an interactive session it runs
                     forever displaying real-time stats. Otherwise if --raw or
                     --csv is specified, or if you redirect the output to a non
                     TTY, it samples the latency for 1 second (you can use
                     -i to change the interval), then produces a single output
                     and exits.
  --latency-history  Like --latency but tracking latency changes over time.
                     Default time interval is 15 sec. Change it using -i.
  --latency-dist     Shows latency as a spectrum, requires xterm 256 colors.
                     Default time interval is 1 sec. Change it using -i.
  --lru-test <keys>  Simulate a cache workload with an 80-20 distribution.
  --replica          Simulate a replica showing commands received from the master.
  --rdb <filename>   Transfer an RDB dump from remote server to local file.
  --pipe             Transfer raw Redis protocol from stdin to server.
  --pipe-timeout <n> In --pipe mode, abort with error if after sending all data.
                     no reply is received within <n> seconds.
                     Default timeout: 30. Use 0 to wait forever.
  --bigkeys          Sample Redis keys looking for big keys.
  --hotkeys          Sample Redis keys looking for hot keys.
                     only works when maxmemory-policy is *lfu.
  --scan             List all keys using the SCAN command.
  --pattern <pat>    Useful with --scan to specify a SCAN pattern.
  --intrinsic-latency <sec> Run a test to measure intrinsic system latency.
                     The test will run for the specified amount of seconds.
  --eval <file>      Send an EVAL command using the Lua script at <file>.
  --ldb              Used with --eval enable the Redis Lua debugger.
  --ldb-sync-mode    Like --ldb but uses the synchronous Lua debugger, in
                     this mode the server is blocked and script changes are
                     not rolled back from the server memory.
  --cluster <command> [args...] [opts...]
                     Cluster Manager command and arguments (see below).
  --verbose          Verbose mode.
  --no-auth-warning  Don't show warning message when using password on command
                     line interface.
  --help             Output this help and exit.
  --version          Output version and exit.

Cluster Manager Commands:
  Use --cluster help to list all available cluster manager commands.

Examples:
  cat /etc/passwd | redis-cli -x set mypasswd
  redis-cli get mypasswd
  redis-cli -r 100 lpush mylist x
  redis-cli -r 100 -i 1 info | grep used_memory_human:
  redis-cli --eval myscript.lua key1 key2 , arg1 arg2 arg3
  redis-cli --scan --pattern '*:12345*'

  (Note: when using --eval the comma separates KEYS[] from ARGV[] items)

When no command is given, redis-cli starts in interactive mode.
Type "help" in interactive mode for information on available commands
and settings.

[redis@artisan bin]$ 



Herramientas proporcionadas por el funcionario

Aquí Insertar imagen Descripción

detección de la ejecución

[redis@artisan bin]$ ./redis-cli --bigkeys

# Scanning the entire keyspace to find biggest keys as well as
# average sizes per key type.  You can use -i 0.1 to sleep 0.1 sec
# per 100 SCAN commands (not usually needed).

[00.00%] Biggest string found so far 'artisan43206' with 12 bytes
[37.40%] Biggest string found so far 'artisanBIG' with 26890 bytes

-------- summary -------

Sampled 100004 keys in the keyspace!
Total key length in bytes is 1188921 (avg len 11.89)

Biggest string found 'artisanBIG' has 26890 bytes

100004 strings with 1215805 bytes (100.00% of keys, avg size 12.16)
0 lists with 0 items (00.00% of keys, avg size 0.00)
0 sets with 0 members (00.00% of keys, avg size 0.00)
0 hashs with 0 fields (00.00% of keys, avg size 0.00)
0 zsets with 0 members (00.00% of keys, avg size 0.00)
0 streams with 0 entries (00.00% of keys, avg size 0.00)
[redis@artisan bin]$ 

Redis exploración se lleva a cabo por medio de estadísticas clave, sin la preocupación de que pueda interferir con Redis, desde un punto de vista de los resultados que encontramos artisanBIG este bigkey


objeto de depuración

El propio comando bloqueará Redis, si es O (N), N necesidad de centrarse en el tamaño.

# 查看artisanBIG序列化后的长度
[redis@artisan bin]$ ./redis-cli debug object artisanBIG
Value at:0x7fa527edd0b0 refcount:1 encoding:raw serializedlength:5044 lru:7863297 lru_seconds_idle:112

Los parámetros de salida:

  • Valor en: la dirección de memoria de la llave
  • refcount: citas
  • codificación: codificación de tipo
  • serializedlength: secuencia de longitud 5044 -> 5 KB, no representan a la talla, para referencia
  • lru_seconds_idle: tiempo de inactividad
  • ...

Aquí Insertar imagen Descripción

comando objeto: https://redis.io/commands/object


Qué elegante BigKey delete (borrar perezoso)

  • La forma tradicional: DEL canto

Aquí Insertar imagen Descripción

DEL Indudablemente, orden de bloqueo, si es O (N) N es grande, deben tenerse en cuenta.

  • Otro punto a considerar: Un poco juego de llaves una fecha de caducidad, la operación de cambio de nombre , éstos clave ReDiS propio mantenimiento, que se ocupan de estos BigKey, la misma será bloqueada. Y esta línea no se graban en la consulta lenta, que son capaces de detectar. (Consultas lentas sólo registran el comportamiento del cliente, el comportamiento del servidor Redis en sí no se grabará

  • Recomendado: Redis 4.0 proporciona una eliminación (comando de desenlace) perezoso

Eso es alrededor de 4,0 versión, cómo hacer frente a estos bigKey ella? ----- ", lotes Borrar exploraciones

Aquí Insertar imagen Descripción

Nos centramos mirar -------------> comando de borrado UNLINK perezoso

Lazy Redis es mejor Redis

documento oficial UNLINK: https://redis.io/commands/unlink
Aquí Insertar imagen Descripción

127.0.0.1:6379> UNLINK artisanBIG
(integer) 1
127.0.0.1:6379> 


Varios elementos de configuración acerca de la lazyfree

Aquí Insertar imagen Descripción

  • lazyfree-lazy-desalojo: si la clave de expulsión asíncrona, cuando la memoria alcanza el límite superior, la asignación falla
  • lazyfree-lazy-caduca: si la clave de procesamiento asíncrono expiró eventos
  • lazyfree-lazy-servidor-del: del si el comando se ejecuta la operación de borrado de forma asíncrona, similar a la de desvinculación
  • réplica-lazy-ras: réplica de cliente para hacer una sincronización completa de las veces, ya sea asíncrona db locales ras

El valor por defecto no es, la demanda abierta


Cómo optimizar bigKey

  • estructuras de datos optimizadas: cadenas? picadillo ?. . . .
  • Razonable llave dividida: 1 grande dividida llave en pequeña N clave
  • optimización del sistema: getall-> mget
  • O aislamiento físico actualización de la tarjeta (paliativo)

Avanzada -Redis Redis problemas de diseño llave y BigKey

Aquí Insertar imagen Descripción

Publicados 825 artículos originales · ganado elogios 2060 · Vistas 4.2 millones +

Supongo que te gusta

Origin blog.csdn.net/yangshangwei/article/details/105038781
Recomendado
Clasificación