FastCGI 之共享内存做缓存


前段时间有一个业务需求----体育比赛数据的更新。客户端过来的请求量非常大,而且十分频繁,因为是比赛数据,得分这些需要实时更新,然而数据源在遥远的他乡。如果每个请求过来了都往数据源去拉数据,路途遥远耗费时间不说,量还大,给数据源那边造成了很大压力。

常规的思路是本地做个缓存server,由缓存server定时更新近期的数据。当请求过来了,cgi程序向缓存server拉数据。
因为比较赶,暂时没有时间做缓存server。
如果把数据缓存到磁盘的话,花上磁盘IO的时间,性能上又满足不了要求。

结合fast-cgi的工作的原理,最后采用了共享内存结合hash来做缓存。
共享内存是采用内存地址直接映射过去的,访问很快,减去了磁盘IO的时间,作为缓存的“容器”总算是解决了。

上面也说了,数据需要实时更新,因此每份数据还有一个生命周期,因此必须给每份数据加上一个时间戳,通过hash取出的时候,还需要判断是否过期,过期的话还是得从数据源那边拉取,并进行更新。


暂时是hold住了场面。长久之计还是得赶快做个缓存server。


你可能感兴趣的:(cgi,缓存)