Fixing redis queries
This commit is contained in:
@@ -168,14 +168,40 @@ EOF
|
||||
|
||||
# ------------------------------ Redis toggles ------------------------------
|
||||
_redis_cli() {
|
||||
if command -v docker >/dev/null 2>&1 && docker compose ps redis >/dev/null 2>&1; then
|
||||
docker compose exec -T redis redis-cli "$@"
|
||||
elif command -v redis-cli >/dev/null 2>&1; then
|
||||
redis-cli -h "${REDIS_HOST:-127.0.0.1}" -p "${REDIS_PORT:-6379}" "$@"
|
||||
else
|
||||
echo "redis-cli not found and no docker compose redis service available." >&2
|
||||
return 1
|
||||
# Allow explicit override with PODX_REDIS_CLI, e.g.:
|
||||
# PODX_REDIS_CLI="docker exec -i myredis redis-cli"
|
||||
if [ -n "${PODX_REDIS_CLI:-}" ]; then
|
||||
# shellcheck disable=SC2086
|
||||
${PODX_REDIS_CLI} "$@"
|
||||
return $?
|
||||
fi
|
||||
|
||||
# Defaults (overridable via .env)
|
||||
: "${PODX_REDIS_SERVICE:=redis}"
|
||||
: "${PODX_REDIS_HOST:=${REDIS_HOST:-127.0.0.1}}"
|
||||
: "${PODX_REDIS_PORT:=${REDIS_PORT:-6379}}"
|
||||
|
||||
if command -v docker >/dev/null 2>&1 && command -v docker compose >/dev/null 2>&1; then
|
||||
# If the configured service exists, use it
|
||||
if docker compose ps --services 2>/dev/null | grep -qx "$PODX_REDIS_SERVICE"; then
|
||||
docker compose exec -T "$PODX_REDIS_SERVICE" redis-cli "$@"
|
||||
return $?
|
||||
fi
|
||||
# Auto-detect a redis-like service name (redis, redis-*, *-redis, *_redis)
|
||||
auto_srv="$(docker compose ps --services 2>/dev/null | grep -Ei '(^redis$)|(^redis[-_])|([-_]redis$)' | head -n1)"
|
||||
if [ -n "$auto_srv" ]; then
|
||||
docker compose exec -T "$auto_srv" redis-cli "$@"
|
||||
return $?
|
||||
fi
|
||||
fi
|
||||
|
||||
if command -v redis-cli >/dev/null 2>&1; then
|
||||
redis-cli -h "$PODX_REDIS_HOST" -p "$PODX_REDIS_PORT" "$@"
|
||||
return $?
|
||||
fi
|
||||
|
||||
echo "Could not find a way to run redis-cli.\n- Set PODX_REDIS_CLI to a full command (e.g. 'docker exec -i <container> redis-cli')\n- Or set PODX_REDIS_SERVICE to your compose service name\n- Or install redis-cli / set PODX_REDIS_HOST & PODX_REDIS_PORT" >&2
|
||||
return 1
|
||||
}
|
||||
|
||||
# --- Redis key utilities --------------------------------------------------
|
||||
@@ -204,6 +230,28 @@ _redis_llen() { # usage: _redis_llen <key>
|
||||
_redis_cli LLEN "$1" 2>/dev/null | tr -d '\r' || echo 0
|
||||
}
|
||||
|
||||
_redis_type() { # usage: _redis_type <key>
|
||||
_redis_cli TYPE "$1" 2>/dev/null | tr -d '\r' || echo none
|
||||
}
|
||||
|
||||
_redis_size() { # usage: _redis_size <key>
|
||||
local k="$1"
|
||||
local t; t="$(_redis_type "$k")"
|
||||
case "$t" in
|
||||
list) _redis_cli LLEN "$k" 2>/dev/null | tr -d '\r' || echo 0 ;;
|
||||
set) _redis_cli SCARD "$k" 2>/dev/null | tr -d '\r' || echo 0 ;;
|
||||
zset) _redis_cli ZCARD "$k" 2>/dev/null | tr -d '\r' || echo 0 ;;
|
||||
hash) _redis_cli HLEN "$k" 2>/dev/null | tr -d '\r' || echo 0 ;;
|
||||
string) _redis_cli STRLEN "$k" 2>/dev/null | tr -d '\r' || echo 0 ;;
|
||||
stream) _redis_cli XLEN "$k" 2>/dev/null | tr -d '\r' || echo 0 ;;
|
||||
none) echo 0 ;;
|
||||
*) # unknown or module-specific; try LLEN, then ZCARD, then HLEN
|
||||
_redis_cli LLEN "$k" 2>/dev/null | tr -d '\r' || \
|
||||
_redis_cli ZCARD "$k" 2>/dev/null | tr -d '\r' || \
|
||||
_redis_cli HLEN "$k" 2>/dev/null | tr -d '\r' || echo 0 ;;
|
||||
esac
|
||||
}
|
||||
|
||||
_transcribe_key="podx:transcribe:paused"
|
||||
|
||||
# Queue namespace & patterns (override in .env if your deployment differs)
|
||||
@@ -272,11 +320,11 @@ case "$cmd" in
|
||||
echo "[workers] namespace: ${PODX_QUEUE_NS}"
|
||||
for q in ${PODX_WORKER_QUEUES}; do
|
||||
base="${PODX_QUEUE_NS}:${q}"
|
||||
printf "%-28s %6s\n" "$base" "$(_redis_llen "$base")"
|
||||
printf "%-28s %6s\n" "$base" "$(_redis_size "$base")"
|
||||
for suf in ${PODX_QUEUE_SUFFIXES}; do
|
||||
k="${base}${suf}"
|
||||
if [ -n "$(_redis_keys "$k")" ]; then
|
||||
printf "%-28s %6s\n" "$k" "$(_redis_llen "$k")"
|
||||
printf "%-28s %6s\n" "$k" "$(_redis_size "$k")"
|
||||
fi
|
||||
done
|
||||
done
|
||||
@@ -302,7 +350,7 @@ case "$cmd" in
|
||||
for pat in ${OPENWEBUI_QUEUE_PATTERNS}; do
|
||||
mapfile -t keys < <(_redis_keys "$pat")
|
||||
for k in "${keys[@]}"; do
|
||||
printf "%-40s %6s\n" "$k" "$(_redis_llen "$k")"
|
||||
printf "%-40s %6s\n" "$k" "$(_redis_size "$k")"
|
||||
done
|
||||
done
|
||||
;;
|
||||
|
Reference in New Issue
Block a user