Fixing redis queries
This commit is contained in:
@@ -168,14 +168,40 @@ EOF
|
|||||||
|
|
||||||
# ------------------------------ Redis toggles ------------------------------
|
# ------------------------------ Redis toggles ------------------------------
|
||||||
_redis_cli() {
|
_redis_cli() {
|
||||||
if command -v docker >/dev/null 2>&1 && docker compose ps redis >/dev/null 2>&1; then
|
# Allow explicit override with PODX_REDIS_CLI, e.g.:
|
||||||
docker compose exec -T redis redis-cli "$@"
|
# PODX_REDIS_CLI="docker exec -i myredis redis-cli"
|
||||||
elif command -v redis-cli >/dev/null 2>&1; then
|
if [ -n "${PODX_REDIS_CLI:-}" ]; then
|
||||||
redis-cli -h "${REDIS_HOST:-127.0.0.1}" -p "${REDIS_PORT:-6379}" "$@"
|
# shellcheck disable=SC2086
|
||||||
else
|
${PODX_REDIS_CLI} "$@"
|
||||||
echo "redis-cli not found and no docker compose redis service available." >&2
|
return $?
|
||||||
return 1
|
|
||||||
fi
|
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 --------------------------------------------------
|
# --- 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_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"
|
_transcribe_key="podx:transcribe:paused"
|
||||||
|
|
||||||
# Queue namespace & patterns (override in .env if your deployment differs)
|
# Queue namespace & patterns (override in .env if your deployment differs)
|
||||||
@@ -272,11 +320,11 @@ case "$cmd" in
|
|||||||
echo "[workers] namespace: ${PODX_QUEUE_NS}"
|
echo "[workers] namespace: ${PODX_QUEUE_NS}"
|
||||||
for q in ${PODX_WORKER_QUEUES}; do
|
for q in ${PODX_WORKER_QUEUES}; do
|
||||||
base="${PODX_QUEUE_NS}:${q}"
|
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
|
for suf in ${PODX_QUEUE_SUFFIXES}; do
|
||||||
k="${base}${suf}"
|
k="${base}${suf}"
|
||||||
if [ -n "$(_redis_keys "$k")" ]; then
|
if [ -n "$(_redis_keys "$k")" ]; then
|
||||||
printf "%-28s %6s\n" "$k" "$(_redis_llen "$k")"
|
printf "%-28s %6s\n" "$k" "$(_redis_size "$k")"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
@@ -302,7 +350,7 @@ case "$cmd" in
|
|||||||
for pat in ${OPENWEBUI_QUEUE_PATTERNS}; do
|
for pat in ${OPENWEBUI_QUEUE_PATTERNS}; do
|
||||||
mapfile -t keys < <(_redis_keys "$pat")
|
mapfile -t keys < <(_redis_keys "$pat")
|
||||||
for k in "${keys[@]}"; do
|
for k in "${keys[@]}"; do
|
||||||
printf "%-40s %6s\n" "$k" "$(_redis_llen "$k")"
|
printf "%-40s %6s\n" "$k" "$(_redis_size "$k")"
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
|
Reference in New Issue
Block a user