有没有人遇到过 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值的主要内容,如果未能解决你的问题,请参考以下文章