How does one flush an entry from redis?
Havard Eidnes
he at uninett.no
Sun Dec 18 12:17:45 UTC 2022
> Certainly NOT the best solution, but it works (emergencies)
>
> My redis database contains only 1213 entries, so the processing time is
> acceptable.
>
> I use a bash script (commented out the line that actually deletes the
> entry, dry run before you uncomment that line).
>
>
> #!/bin/bash
>
> mapfile -t keysArray < <(redis-cli --scan)
> for (( i=0; i<${#keysArray[@]}; i++ )); do
> data=$(echo "dump ${keysArray[i]}" | redis-cli | tr -d '\0')
> if [[ "${data}" == *"accounts"*"google"*"com"* ]]; then
> echo "${keysArray[i]}"
> # redis-cli del "${keysArray[i]}"
> fi
> done
Wow, when you say "bash script" there's no kidding, the above is
chock full of bash-specific extensions. My preference is for
portability, and not to force my own preferences on others, i.e.
using standards as much as possible.
As a non-redis user myself, I *think* the following shell script
should be equivalent to the above, and be portable to other
Bourne shells:
#!/bin/sh
redis-cli --scan | while read e; do
data=$(echo "dump $e" | redis-cli | tr -d '\0')
if expr "$data" : ".*accounts.*google.*com.*" > /dev/null;
then
echo "$e"
# redis-cli del "$e"
fi
done
Best regards,
- Havard
More information about the Unbound-users
mailing list