我有一个非常小的数据保存在 Redis 和下面的工作正在按照预期,将允许我下载所有的密钥。
redis-cli keys *
有办法拿到 keys+values *吗?
keys+values *
虽然没有这样的命令,但是您可以编写一个脚本来完成这项工作。
您需要为每个键执行一个“ type”命令:
> type <key>
视乎回应而定:
get <key>
hgetall <key>
lrange <key> 0 -1
smembers <key>
zrange <key> 0 -1 withscores
请记住,对于散列和排序集,您将获得键/分数和值。
sh的可能实施:
sh
#!/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
但请注意:
警告: 将 KEYS视为一个命令,只能在极其小心的生产环境中使用。在对大型数据库执行时,它可能会破坏性能。此命令用于调试和特殊操作,如更改密钥空间布局。
KEYS
Https://redis.io/commands/keys
在 redis >= 5.x中引入了一种新的数据类型 stream
redis >= 5.x
stream
should give you stream. To get its values:
> XRANGE <key> - +
简短的回答 :
for i in $(redis-cli KEYS '*'); do echo $i; redis-cli GET $i; done
Long answer:
拿到所有的钥匙:
redis-cli KEYS '*'
得到一个键的值:
redis-cli GET <your-key>
如果你想要所有的价值:
for i in $(redis-cli KEYS '*'); do redis-cli GET $i; done
最后是所有的键和值: