如何在redis中模式匹配空字符串?

how to pattern match empty string in redis?

在 Redis 中,我有以下格式的散列键

keys {
  'img::opt': 'nameX',
  'img:*:opt': 'nameY',
  'img:#:opt': 'nameZ',
  'img:A:opt': 'nameN'
}

实际上是'extension:owner:spec'

的格式

我想根据 returns,

的所有者执行 hscan
1. Everything except blank(will return 2nd, 3rd and 4th keys)
2. Only blank and star(*)(will return 1st and 2nd keys)

首先,我可以将模式用作 'img:?*:opt'。如何编写可用于第二种情况的模式。

我试过了,

img:[^][*]:opt
img:[^|*]:opt
img:[*^]:opt

但其中 none 个正在运行。是否可以模式匹配空字符串?

Redis 的 glob 样式模式匹配语法不支持 not ('^') 运算符。

但是,当您正在寻找两个特定的密钥时,为什么不直接通过以下操作直接访问它们:

HGET img:*:opt img::opt

注意:Redis 4之前的版本,HGET需要替换成HMGET