V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
chengz
V2EX  ›  Redis

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

  •  
  •   chengz · 2020-09-21 20:35:17 +08:00 · 5087 次点击
    这是一个创建于 1523 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题

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