我正在回顾我的代码并意识到我花费了大量时间:
- 从数据库中取出行,
- 格式化为XML,
- AJAX GET传输到浏览器,然后
- 将其转换回哈希的JavaScript对象作为本地数据存储。
在更新时,我必须反向执行此过程(除了使用POST而不是XML)。
刚开始看Redis,我认为我可以节省大量时间,将对象保存在服务器上的键值存储中,并直接使用JSON传输到JS客户端。但是,我的头脑不足以预见我放弃SQL DB所付出的代价(即,我害怕放弃GROUP BY/HAVING查询)。
对于我的数据,我有:
- 多对多关系,例如obj-tags、obj-groups等。
- 通过这些组合查询对象,例如WHERE tag IN ('a', 'b','c') AND group in ('x','y')
- 自连接,例如每个对象的所有标签WHERE tag='a'(SQL group_concat())
- 大量外连接,例如OUTER JOIN rating ON o.id = rating.obj_id
- 以及feeds,在REDIS中似乎是一个强项
如何成功地混合键值和SQL DB?
例如,从REDIS集合中连接大量obj.Ids与使用SQL RANGE查询的SQL数据(即WHERE obj.id IN (1,4,6,7,8,34,876,9879,567,345,...),或者反之亦然?
欢迎提出想法/建议。