chengz
0.04D
V2EX  ›  Redis

redis 如何做类似关系数据库的条件查询

  •  
  •   chengz · Sep 21, 2020 · 5709 views
    This topic created in 2066 days ago, the information mentioned may be changed or developed.

    如题

    1. 如果只用 redis,如何满足一些需要条件查询的需求?
    2. 如果 redis 只用于缓存,使用 MongoDB 持久化,大家是怎么同步数据的?
    8 replies    2020-09-23 11:14:50 +08:00
    mitu9527
        1
    mitu9527  
       Sep 21, 2020   ❤️ 1
    Redis 本身就是非关系型的,不论是当作缓存还是数据库,所以为什么要用关系型查询语言?不过 Redis 的 RediSQL 模块可以做到内嵌 SQLite 并实现 SQL 查询。
    Aethyr
        2
    Aethyr  
       Sep 21, 2020   ❤️ 1
    1. 自己解析 SQL 映射到 KV 数据,给查询条件建立映射作为索引,不能命中索引的用 SCAN 查找
    qwerthhusn
        3
    qwerthhusn  
       Sep 21, 2020   ❤️ 1
    KEYS SCAN 都可以做一些 Key 查找
    anthow
        4
    anthow  
       Sep 21, 2020   ❤️ 1
    1.具体什么条件了?如果想用关系性数据库那种复杂条件,那么就要考虑 redis 是否真正的适合
    2.等同于缓存一致性?
    chengz
        5
    chengz  
    OP
       Sep 22, 2020
    @mitu9527 业务需要使用高速缓存,但是有少量简单的条件查询,以前用的 mysql,就必须自己维护缓存,不太方便,同时性能也可能有问题。看了下 RediSQL,如果要使用,必须自建 redis ?可以尝试下
    @hcx0 @qwerthhusn 条件查询的字段是可变的,不能存储在 key 中
    @anthow 1.单表简单查询,2.最终一致性即可,我理解的是缓存读写,定时从 redis 同步数据到 mongodb 落地,所有条件查询都通过 mongodb 完成
    shakeyo
        6
    shakeyo  
       Sep 22, 2020
    简单的条件查询用 lua 脚本直接 scan 吧
    这么少量的需求单独引入一个 mongodb 依赖不明智
    你既然也有 mysql,为啥不考虑 redis 同步到 mysql
    Aethyr
        7
    Aethyr  
       Sep 22, 2020
    @chengz 可以做到但没必要,不如说说是什么业务场景,MySQL 搞个好点得配置上个 SSD 代码合理差距不会超过 1ms,真的非得用这么复杂得方案吗
    chengz
        8
    chengz  
    OP
       Sep 23, 2020
    @shakeyo @hcx0 业务场景比较垂直,我之前表述不准确,后续数据量会比较大,mysql 平滑扩容比较麻烦,所以考虑切换 mongodb 。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3616 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 04:39 · PVG 12:39 · LAX 21:39 · JFK 00:39
    ♥ Do have faith in what you're doing.