php - 具有匹配和范围的redis数据存储

标签 php mongodb redis

我正在尝试使用 redis 作为我的 mongodb 数据库的缓存层,我的要求是我有城市集合,其中包含亚洲大陆和欧洲大陆的所有城市在这些数据上,我需要使用正则表达式和分页按城市名称执行搜索。我正在将所有城市集合转储到 redis zset 中。问题是当我能够进行分页但无法使用 zscan and match 进行区分大小写的搜索时。请帮我看看我使用 redis 的方法是对还是错。

最佳答案

我不知道对与错,但我是这样处理 Redis 的: MATCH 子句进行 glob-style 匹配,所以当你需要更健壮的表达式时,这是一个问题.在这种情况下,您可以尝试三种基本方法:

  1. 如果可能,尝试将您的搜索规范化为 glob 样式,例如通过始终进行小写搜索(并保持数据相同)
  2. 尝试使用 ZRANGEBYLEX,可能使用 http://redis.io/topics/indexes 处的信息
  3. 使用 Lua 脚本来实现正则表达式逻辑,例如https://stackoverflow.com/a/29945372/3160475

另请注意,关于使用 ZSCAN 进行分页,COUNT 开关只是一个提示。

关于php - 具有匹配和范围的redis数据存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33149425/

相关文章:

php - 如何为mvc crud网站创建动态更新功能

单机上的 MongoDB 副本集

performance - 对阻塞命令(例如 blpop)的 Redis 延迟进行基准测试?

Redis RDB 比内存使用量 (716MB) 小 (203KB)

python - 如何将redis管道用于嵌套方法

PHP foreach 进行查询

php - S3 PUT 命令的 header 问题

MongoDB 复制因子

node.js - 连接到 MongoDB 时身份验证总是失败

php - 我正在尝试从即将弃用的 mysql 语句到 msqli 准备语句,我做错了什么?