代码之家  ›  专栏  ›  技术社区  ›  RaR

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

  •  0
  • RaR  · 技术社区  · 7 年前

    在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
    

    但没有一个有效。是否可以对空字符串进行模式匹配?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Itamar Haber    7 年前

    Redis的全局样式模式匹配语法不支持not(“^”)运算符。

    然而,当您正在寻找两个特定的键时,为什么不直接通过执行以下操作来访问它们:

    HGET img:*:opt img::opt
    

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