有没有人遇到过 redis keys 无法显示所有的key值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有没有人遇到过 redis keys 无法显示所有的key值相关的知识,希望对你有一定的参考价值。

如果你是redis集群的话,在命令行输入 keys * 只会返回其中一个redis实例上所有key,要想显示所有的key就要遍历每台实例,命令行中我不知道怎么做,但是代码中可以这么做:以JAVA为例:
public TreeSet<String> keys(String pattern)
TreeSet<String> keys = new TreeSet<>();
// 遍历集群中每个节点,在每个节点实例上执行keys *
Map<String, JedisPool> clusterNodes = jedisCluster.getClusterNodes();
for (String k : clusterNodes.keySet())
JedisPool jp = clusterNodes.get(k);
Jedis connection = jp.getResource();
try
keys.addAll(connection.keys(pattern));
catch (Exception e)
e.printStackTrace();
finally
connection.close();


return keys;
参考技术A 由于数据结构特殊性,NameValueCollection 只提供Key的遍历,不提供Value的遍历。必须先知道Key,然后再通过Key取Values。 以下是MSDN的示例。 using System; using System.Collections; using System.Collections.Specialized; public class Sa...本回答被提问者采纳

显示 redis 中的所有键 - 在一行中

【中文标题】显示 redis 中的所有键 - 在一行中【英文标题】:Show all keys in redis - in one line 【发布时间】:2012-08-20 14:08:10 【问题描述】:

我需要查看 Redis 中的所有可用键。这个问题:

Redis command to get all available keys?

充分涵盖了我在没有参数的情况下运行redis-cli,然后输入keys *

但是,如何使用单个命令获取所有键?

redis-cli keys * 返回:

(error) ERR 'keys' 命令的参数数量错误

即使设置了键,也会检查您是否使用双命令解决方案。

【问题讨论】:

【参考方案1】:

你需要做的

redis-cli keys '*'

避免您的 shell 将 * 扩展为文件名列表。

【讨论】:

这种方法有问题。 KEYS 块 Redis(提及 here)。因此,如果 Redis 有很多键,它会显着降低 Redis 的性能。而不是这个命令,最好使用SCAN 命令或Keylord 等专用工具来管理 Redis 数据库(它使用 SCAN 命令加载键)。

以上是关于有没有人遇到过 redis keys 无法显示所有的key值的主要内容,如果未能解决你的问题,请参考以下文章

有没有人遇到过这个奇怪的 html5 视频播放问题?黑色元素,无法加载

求助mysql无法启动的问题,不知有没有人遇到过

求助mysql无法启动的问题,不知有没有人遇到过

显示 redis 中的所有键 - 在一行中

有没有好的方法遍历redis里面的所有key

Redis 之用 scan 模糊匹配 key