频繁变化的数据如何有效的缓存?(redis,memcached)

机票航班信息是从第三方接口查询获得的(收费,且速度比较慢.),我们会将用户的查询结果缓存起来,降低成本,加快页面响应速度。
查询的条件有: 出发机场 目的地机场 准备预定的日期
返回结果有: 可预定的座位,价格,及其他信息XML
困惑的地方来了:
1.数据的过期时间多长合适? 长期的过期时间设置比较合理?

2.缓存的更新机制该怎么做?

1.数据的过期时间多长合适? 长期的过期时间设置比较合理?
题主描述的是频繁变化的数据,那就假设调用第三方接口的频率为1s/次,看起来貌似用不着缓存。但题注强调了这个接口很慢,猜想应该是在业务里同步调用这个接口来更新数据,并且写入缓存的。那解决方案如第一个答案一样,缓存数据不要设置过期时间,在线业务只从缓存读取数据,数据的同步交给离线脚本异步来做,这样就消除了第三方接口对在线业务的影响,可以很快的返回数据了。
2.缓存的更新机制该怎么做?
缓存的更新就是异步离线脚本,定时轮询API,获取新数据,存入缓存,只是这里需要记录需要更新数据的航班,毕竟不是所有航班都有人访问。
题主提到该接口收费,即希望尽可能少的调用,可以在业务端有人访问某个航班的时候做个记录,并且在数据同步脚本仅对有记录的且T时间内没有同步过数据的航班进行数据同步,T是航班同步间隔,自己根据业务来。

让第三方接口查询在后台操作,比如用crontab在后台定时取第三方接口数据,存储取到的数据到自己数据库或cache;如果要求实时性很高,crontable时间设置短一点。

作者:李波
链接:https://www.zhihu.com/question/22414215/answer/123868319
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值