当前位置: 首页 > 面试题库 >

有没有办法列出Redis的所有键及其数据类型?

殷宇
2023-03-14
问题内容

假设我在redis中有以下键:

密钥名称:
setkey
hashkey
zsetkey

当我输入命令redis-clikeys * 我正确地得到所有上述密钥列表。要获取特定键的数据类型,我们使用命令type keyname

有没有办法列出Redis中的所有键及其数据结构?例如:

setkey set
hashkey hash
zsetkey sorted set

是否有命令/本机方式来实现这一目标?提前致谢。


问题答案:

首先,您不应该使用该KEYS命令,因为它可能会长时间阻止Redis。相反,您需要使用SCAN命令来获取数据库中的所有密钥。

其次,在Redis 6.0之前,没有本机的方法可以执行此操作,您必须调用SCAN以迭代键空间,对于每个键,使用TYPE命令获取其类型。

幸运的是,在Redis 6.0中,该SCAN命令支持TYPE子命令,您可以使用此子命令来扫描指定类型的所有键:

SCAN 0 TYPE string

SCAN 0 TYPE list

有关详细信息,请检查SCAN文档。它还描述了为什么KEYS不好。



 类似资料:
  • 问题内容: 我想一次从redis列表中弹出所有列表项。 我不想在列表为空时调用或方法,因为它似乎多次无效地将请求发送到。 我也知道我可以使用方法获得所有列表,但不能弹出项目。 你能建议我吗? 我只想和清单中的项目一个请求即可。 问题答案: 正如Itamar Haber所说,请使用lrange和del。在管道模式下,它将作为单个命令完成。

  • 有没有办法列出AWS中的所有资源?对于所有区域,所有资源...例如列出所有EC2实例、所有VPC、API Gateway中的所有API等...我想列出我帐户的所有资源,因为我很难找到我现在可以放弃的资源。

  • 问题内容: 我运行了此命令以访问我的Redis服务器。 现在,我想显示所有数据库。 请告诉我这个命令。 谢谢。 问题答案: 没有命令可以执行此操作(例如您可以使用MySQL进行操作)。Redis数据库的数量是固定的,并在配置文件中设置。默认情况下,您有16个数据库。每个数据库都用数字(而不是名称)标识。 您可以使用以下命令来了解数据库的数量: 您可以使用以下命令列出定义了某些键的数据库: 请注意,

  • 问题内容: 它或多或少地显示:Python中是否有一种(简单的)方法可以列出Windows系统中所有当前正在使用的驱动器号? (我的google-fu似乎让我失望了。) 有关: 枚举Windows(C ++ / Win32)中所有可用的驱动器号 问题答案: 改编自:http : //www.faqts.com/knowledge_base/view.phtml/aid/4670

  • 问题内容: 我有一个文件,称之为。 有没有一种方法可以“读取”其中的内容,并获取其中的所有类的列表作为完整的类名,包括其包,例如? 我在考虑,但是似乎找不到用于检索整个类集的方法。 问题答案: 您可以将dexlib2库用作独立库(在maven中可用),以读取dex文件并获取类列表。 请注意,类名将采用“ Ljava / lang / String;”的形式,这就是它们如何存储在dex文件(和Jav