【问题标题】:How to set Redis to be case insensitive while filtering keys?如何在过滤键时将 Redis 设置为不区分大小写?
【发布时间】:2019-06-13 05:00:47
【问题描述】:

我正在使用 redis 在我的应用程序中设置和过滤键值对。但它在使用 HSCAN 过滤时总是返回区分大小写的数据。我需要从 redis 获取不区分大小写的数据。我怎样才能得到这个?

如何设置 Redis 不区分大小写?

例如:如果我搜索“foo”,它应该返回以下结果,

Foo
foo
FOO
fOO

请提供您对此的意见。

【问题讨论】:

  • 你有没有尝试使用正则表达式,比如r.keys("*foo*")
  • 是的,我正在使用 HSCAN,'HSCAN myhash 0 match daily' 返回空结果。但是当我使用 HSCAN development_partners 0 match Daily 时,它会返回以下内容,127.0.0.1:6379> HSCAN myhash 0 match Daily 1) "The Daily News" 2) " dailynews” 3) “每日新闻更新” 4) “新闻更新”

标签: redis redis-cli


【解决方案1】:

没有内置的方法可以做到这一点,但是,你可以破解它。

不要这样做:HSET hash foo valHSET hash Foo valHSET hash fOo val,而是让这些字段具有公共前缀,例如FOO:

HSET hash FOO:foo val
HSET hash FOO:Foo val
HSET hash FOO:fOo val

然后,您可以使用HSCAN hash 0 MATCH FOO:* 不区分大小写地扫描项目,而不是调用HSCAN hash 0 MATCH foo*

总之,使用不区分大小写的前缀对您的字段进行编码,例如所有字符都大写或小写。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-24
    • 1970-01-01
    • 2011-12-07
    • 2013-08-07
    • 1970-01-01
    • 2010-11-01
    相关资源
    最近更新 更多