Files
html/top-ia/prefix_cache.sh
2026-04-16 23:42:50 +02:00

32 lines
1.2 KiB
Bash
Executable File

#!/bin/bash
# Usage: prefix_cache.sh <action:get|set|stats> [key] [value]
ACTION="${1:-stats}"
KEY="${2:-}"
VAL="${3:-}"
RPORT=6379
# Try different redis auths
RCMD="redis-cli -p $RPORT"
case "$ACTION" in
set)
[ -z "$KEY" ] || [ -z "$VAL" ] && { echo '{"error":"set needs key+value"}'; exit 1; }
HASH=$(echo -n "$KEY" | sha256sum | cut -c1-16)
$RCMD SETEX "wevia:prefix:$HASH" 3600 "$VAL" >/dev/null 2>&1
echo "{\"set\":\"wevia:prefix:$HASH\",\"ttl\":3600}"
;;
get)
[ -z "$KEY" ] && { echo '{"error":"get needs key"}'; exit 1; }
HASH=$(echo -n "$KEY" | sha256sum | cut -c1-16)
V=$($RCMD GET "wevia:prefix:$HASH" 2>/dev/null)
[ -n "$V" ] && echo "{\"hit\":true,\"key\":\"wevia:prefix:$HASH\",\"value\":$(python3 -c "import json,sys;print(json.dumps(sys.argv[1]))" "${V:0:300}")}" || echo "{\"hit\":false,\"key\":\"wevia:prefix:$HASH\"}"
;;
stats)
COUNT=$($RCMD --scan --pattern 'wevia:prefix:*' 2>/dev/null | wc -l)
MEM=$($RCMD INFO memory 2>/dev/null | grep used_memory_human | head -1 | cut -d: -f2 | tr -d '\r')
PING=$($RCMD PING 2>/dev/null)
echo "{\"redis\":\"$PING\",\"prefix_keys\":$COUNT,\"mem\":\"$MEM\"}"
;;
*)
echo '{"error":"action must be get|set|stats"}'
;;
esac