第一次用Redis做消息队列,求解答

工程师爸爸 发布于 2013/02/25 18:46
阅读 7K+
收藏 5

之前没用过消息队列系统,第一次接触,目前在做一个API接口系统,考虑到接口调用频繁的问题,想采用队列机制实现, 环境PHP+Mysql+Redis/MongoDB。

目的:不实时操作Mysql数据库,而是进入Redis队列, 当满足条件(自定义条件,长度大小时间等)同步到Mysql。

问题1:Redis中存储数据结构如何设计? (我想的是队列key对应存储:库+表+SQL语句这些信息 )

问题2:触发方式如何选择?(我想到的:1、每次请求判断队列大小(条件成立则触发同步) 2、服务器后台脚本(定时同步) )

问题3:如果是队列KEY存储:库/表/sql语句这些信息,在数据同步时则需连接不同数据库,操作不同的表这种设计合理吗?

以下是问题补充:

@工程师爸爸:队列中存储信息可能是不同的数据库/表,也可能是SQL Server (2013/02/25 18:47)
加载中
1
harleyliao
harleyliao

问题1:第一个也行,不过不建议这样,最好还是保存具体和业务相关的数据,而不是直接的sql

问题2:触发方式如何选择,建议消费者端实现,也就是 服务器后台脚本

问题3:和问题1的处理方式有关系,但是不管怎么说还是把不同的业务分到不同的队列之中去

0
小端木
小端木

Redis中存储数据结构 就是你需要的信息即可,库+表+SQL语句这些信息 (3个字段)。

触发方式 Redis 自动触发。

触发的还是你的脚本,脚本执行相应的代码。合理。

0
wobuzhidao_
wobuzhidao_
有兴趣,lz能否讲些实现细节
0
osrchina
osrchina
进展如何了?
0
0
月影又无痕
月影又无痕

1.  redis中保存的是数组(序列化),绝对不要保存SQL,保存SQL的方法很蛋疼 保存数组是为了数据库安全(万一sql语句有错误,任务就直接失败了),灵活度和兼容性

2. 服务器后台作一个shell脚本,死循环,不断从队列中取数据,进行处理.如次反复,如果没有数据,也立即尝试取数据---不要担心性能问题,后台单并发请求,不会造成性能问题

3. 因为队列中保存的是数组,不存在这个问题

返回顶部
顶部