I have a very small data saved in Redis and the following is working as expected that will allow me to download all keys.
redis-cli keys *
Is there any way to get the keys+values *
?
I have a very small data saved in Redis and the following is working as expected that will allow me to download all keys.
redis-cli keys *
Is there any way to get the keys+values *
?
There's no command for that, but you can write a script to do so.
You will need to perform for each key a "type" command:
> type <key>
and depending on the response perform:
get <key>
hgetall <key>
lrange <key> 0 -1
smembers <key>
zrange <key> 0 -1 withscores
Keep in mind that for hashes and sorted sets you will be getting the keys/scores and values.
A possible sh
implementation:
#!/bin/sh -eu
keys=`redis-cli keys '*'`
if [ "$keys" ]; then
echo "$keys" | while IFS= read -r key; do
type=`echo | redis-cli type "$key"`
case "$type" in
string) value=`echo | redis-cli get "$key"`;;
hash) value=`echo | redis-cli hgetall "$key"`;;
set) value=`echo | redis-cli smembers "$key"`;;
list) value=`echo | redis-cli lrange "$key" 0 -1`;;
zset) value=`echo | redis-cli zrange "$key" 0 -1 withscores`;;
esac
echo "> $key ($type):"
echo "$value" | sed -E 's/^/ /'
done
fi
But do note:
Warning: consider
KEYS
as a command that should only be used in production environments with extreme care. It may ruin performance when it is executed against large databases. This command is intended for debugging and special operations, such as changing your keyspace layout.
stream) value=`echo | redis-cli -h localhost -p 6379 xinfo stream "$key"`;;
to the script. –
Cuvette Short answer:
for i in $(redis-cli KEYS '*'); do echo $i; redis-cli GET $i; done
Long answer:
To get all keys:
redis-cli KEYS '*'
to get the value for a key:
redis-cli GET <your-key>
and if you want all values:
for i in $(redis-cli KEYS '*'); do redis-cli GET $i; done
and finally all keys and values:
for i in $(redis-cli KEYS '*'); do echo $i; redis-cli GET $i; done
(error) WRONGTYPE Operation against a key holding the wrong kind of value
for other types. The list of types and how to retrieve them are in the post above. –
Koblenz With redis >= 5.x
, a new datatype stream
was introduced. So, the
> type <key>
should give you stream
. To get its values:
> XRANGE <key> - +
for windows for /l %%x in (1,1,100000) do (redis-cli get %%x)
© 2022 - 2024 — McMap. All rights reserved.