在命令提示符处获取 Redis 键和值
Posted
技术标签:
【中文标题】在命令提示符处获取 Redis 键和值【英文标题】:Get Redis keys and values at command prompt 【发布时间】:2011-12-26 01:18:20 【问题描述】:我在 Redis 中保存了一个非常小的数据,以下内容按预期工作,可以让我下载所有密钥。
redis-cli keys *
有什么方法可以得到keys+values *
?
【问题讨论】:
【参考方案1】:没有命令,但你可以写一个脚本来做到这一点。
您需要为每个键执行一个“类型”命令:
> type <key>
并根据响应执行:
对于“字符串”:get <key>
对于“哈希”:hgetall <key>
对于“列表”:lrange <key> 0 -1
对于“设置”:smembers <key>
对于“zset”: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
视为只应极其小心地在生产环境中使用的命令。当它针对大型数据库执行时,它可能会破坏性能。此命令用于调试和特殊操作,例如更改键空间布局。
https://redis.io/commands/keys
【讨论】:
添加到它,值意味着并为不同的“类型”获取不同的东西 你能指导一下如何写吗?如果我从 redis 中获取数据,我可以使用 grep 和 sed 之类的命令。到目前为止,我只能导出键而不是上面提到的值。 取决于你想用它做什么。您想创建一系列命令来重现您拥有的数据吗?或者你想做什么?这些命令会给你数据,你只需要写出你想要的输出。 有什么方法可以调整你的脚本以支持密码验证,使用 AUTH 命令?我尝试将“AUTH my_password”添加到您的 redis-cli 命令中,但它不起作用。 我还在脚本中添加了stream) value=`echo | redis-cli -h localhost -p 6379 xinfo stream "$key"`;;
。【参考方案2】:
简答:
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 GUI 可能对到这里的人仍然有用:redislabs.com/redis-enterprise/redis-insight【参考方案3】:对于redis >= 5.x
,引入了新的数据类型stream
。所以,
> type <key>
应该给你stream
。获取它的值:
> XRANGE <key> - +
【讨论】:
以上是关于在命令提示符处获取 Redis 键和值的主要内容,如果未能解决你的问题,请参考以下文章
如何设置发布/调试模式以使用 Microsoft C++ 工具集在命令提示符处编译 cpp 文件