我在Redis中保存了非常小的数据,并且以下数据正在按预期运行,这将允许我下载所有密钥。
redis-cli keys *
有什么办法可以得到keys+values *
吗?
Answers:
没有命令,但是您可以编写脚本来实现。
您将需要为每个键执行一个“类型”命令:
> type <key>
并根据响应执行:
get <key>
hgetall <key>
lrange <key> 0 -1
smembers <key>
zrange <key> 0 -1 withscores
请记住,对于散列和排序集,您将获得键/分数和值。
可能的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
仅在生产环境中应格外小心地考虑使用此命令。在大型数据库上执行时,可能会破坏性能。此命令用于调试和特殊操作,例如更改键空间布局。