【问题标题】:how to pattern match empty string in redis?如何在redis中模式匹配空字符串?
【发布时间】:2017-12-03 05:38:23
【问题描述】:

在 Redis 中,我有以下格式的哈希键

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

其实是'extension:owner:spec'的格式

我想根据返回的所有者执行 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

但它们都不起作用。是否可以模式匹配空字符串?

【问题讨论】:

    标签: redis pattern-matching glob


    【解决方案1】:

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

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

    HGET img:*:opt img::opt
    

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

    【讨论】:

    • 谢谢,@Itamar 澄清了^ 在 REDIS 中不受支持。实际上,有不同的扩展可能。这就是我使用hscan 的原因,这样我就可以像*:?*:opt 那样做。现在看来,执行 2 次 hscan 将是唯一的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2021-06-07
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多