我正在尝试使用 redis
作为我的 mongodb
数据库的缓存层,我的要求是我有城市集合,其中包含亚洲大陆和欧洲大陆的所有城市在这些数据上,我需要使用正则表达式和分页按城市名称执行搜索。我正在将所有城市集合转储到 redis zset 中。问题是当我能够进行分页但无法使用 zscan and match
进行区分大小写的搜索时。请帮我看看我使用 redis
的方法是对还是错。
最佳答案
我不知道对与错,但我是这样处理 Redis 的: MATCH
子句进行 glob-style 匹配,所以当你需要更健壮的表达式时,这是一个问题.在这种情况下,您可以尝试三种基本方法:
- 如果可能,尝试将您的搜索规范化为 glob 样式,例如通过始终进行小写搜索(并保持数据相同)
- 尝试使用
ZRANGEBYLEX
,可能使用 http://redis.io/topics/indexes 处的信息 - 使用 Lua 脚本来实现正则表达式逻辑,例如https://stackoverflow.com/a/29945372/3160475
另请注意,关于使用 ZSCAN
进行分页,COUNT
开关只是一个提示。
关于php - 具有匹配和范围的redis数据存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33149425/