您的位置:首页 > 其它

影院平台搭建 - (7)读多写少数据的缓存

2009-07-22 00:01 387 查看
在影院开发的过程中,为了实现多级不完全树的分类结构,在算法中使用了递归来降低算法复杂度,但取而代之的是对数据库的频繁读写。于是对这部分数据进行缓存就十分必要了。

这部分数据的特点是基本上没有写的操作(update, insert, delete),99%都是读(select)。针对这个特点,可以把数据放入内存中进行memcache。

想到这里,很自然的就会想到几个非常常见的工具:apc,memcache,eAccelerator,File Cache,还有MySQL的内存表。

国外有人比较过这几类的性能,大体是直接数组操作>eAcclerator>apc>File Cache>memcache,MySQL的内存表没测试,而且由于不好控制expire,所以放弃。

在QQ上和zhangsilly就这个问题进行了讨论,觉得apc和eAccelerator的shm接口并不够稳定,存在coredump的可能性,而File Cache有OS specific的问题(性能因文件系统和操作系统而异)。

然后zhangsilly提出可以eAcclerator和file cache结合的做法:

把需要缓存的数据量存储为数组,然后用var_export放到一个php文件里,使用的时候再include进来,这样eAcclerator就可以对这个文件进行优化处理了。而且由于是eAcclerator自己处理,coredump的可能性会小很多(内存不够eAccelerator会自动释放),这样同时兼顾了性能和稳定性。

这是一个很小的技巧,但是相信在实际中是存在很多这样读多写少的地方的,php的话可以考虑采用我这个方法,不过需要注意的是数据量不能一次存放太大,默认eAcclerator对1M以上的文件是不处理的,而且1M的文件本身也很吃内存了。可以考虑对数据进行分析拆分,找出最常用的部分再如此处理。

类别:影院平台搭建 查看评论
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: