REDIS Obtener el tamaño en memoria de cada key usando bash

REDIS Obtener el tamaño en memoria de cada key usando bash

Usando REDIS en Docker

En redis existe el comando redis-cli MEMORY USAGE [key] para obtener el tamaño que ocupa en memoria un elemento en cache.
MEMORY USAGE devuelve el tamaño en bytes que se ocupará al guardar en RAM

Me interesa obtener el tamaño de todos las claves para posteriormente estudiar las de mayor volumen e ir a Cake PHP para analizar el código en esos puntos de escritura.

Tengo que comentar que antes de llegar a esta solución lo intente de varias formas, una de ellas con la librería: Predis\Client con la mala suerte que esta no cuenta con un método para obtener la memoria ocupada.

#!/bin/sh get_size() { k=$1 r=$(redis-cli MEMORY USAGE "$k") echo $r } redis_cmd='redis-cli' for k in `$redis_cmd keys "*"`; do echo $k get_size $k done

Resultado

cake_cache_item_count_gcloud_vm_item_count_69840bc539bf8fadf0c916172888c1b9 119 cake_cache_item_count_gcloud_gke_cluster_item_count_90a0dc6f5a2e282c4c451d6a43fcd6f5 128 cake_cached_auth_user_for_id_74 2012903 cake_cache_item_count_aws_ecs_service_item_count_6f26da5cc311be3e1b38c692b0c3d856 125

Autor: Eduardo A. F.
Publicado: 14-10-2020 18:14