【发布时间】:2011-12-26 01:18:20
【问题描述】:
我在 Redis 中保存了一个非常小的数据,以下内容按预期工作,可以让我下载所有密钥。
redis-cli keys *
有什么方法可以得到keys+values *?
【问题讨论】:
标签: redis
我在 Redis 中保存了一个非常小的数据,以下内容按预期工作,可以让我下载所有密钥。
redis-cli keys *
有什么方法可以得到keys+values *?
【问题讨论】:
标签: redis
没有命令,但你可以写一个脚本来做到这一点。
您需要为每个键执行一个“类型”命令:
> 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视为只应极其小心地在生产环境中使用的命令。当它针对大型数据库执行时,它可能会破坏性能。此命令用于调试和特殊操作,例如更改键空间布局。
【讨论】:
stream) value=`echo | redis-cli -h localhost -p 6379 xinfo stream "$key"`;;。
简答:
for i in $(redis-cli KEYS '*'); do echo $i; redis-cli GET $i; done
长答案:
获取所有密钥:
redis-cli KEYS '*'
获取键的值:
redis-cli GET <your-key>
如果你想要所有的值:
for i in $(redis-cli KEYS '*'); do redis-cli GET $i; done
最后是所有键和值:
for i in $(redis-cli KEYS '*'); do echo $i; redis-cli GET $i; done
【讨论】:
对于redis >= 5.x,引入了新的数据类型stream。所以,
> type <key>
应该给你stream。获取它的值:
> XRANGE <key> - +
【讨论】: