32 lines
1.2 KiB
Bash
Executable File
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
|