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

2020-09-21 20:35:17 +08:00
 chengz

如题

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/709167

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX