Memcached和Lucene笔记

  前段时间完成的项目使用了大量的Memcached,整个架构在性能上的确提高了很多,的确不是一点点的提高,面向大负载访问的时候,MySQL数据库仍然可以做到轻量级的负载,效果不错,建议有条件的朋友一定要把项目改造到Memcached上,著名的Vbb论坛当前的版本就已经开始支持使用Memcached进行论坛数据缓存。我原来在MOP的时候,我们也大量的采用这个东西。

  在使用Memcached方面,谈不上什么经验,反正极端的性能最大化就是使用永久的缓存,通过你的程序逻辑去控制和维护MC里面的缓存数据,我做的项目就是这样处理的,程序的逻辑的确增加了复杂度,但是对于商业项目来说,这种付出是非常值得的。

  Memcached唯一可能需要注意的是,他对key的操作不是原子级别的,所以在高并发处理的时候,对同一个key的写操作可能会导致覆盖,这个需要自己从程序逻辑上进行处理,这个理论我并没有深入研究,不过JH看了源代码给了我这样的结论,按照JH的实力和人品,我认为有80%以上的可信度:)

  对于Lucene,大部分人都不陌生,相关的技术也不用太多讲解,网上到处都是相关的文档。我最近想通过PHP来找到一个最佳的整合Lucene的方法,并且应用到正规的商业应用中,目前知道的可选方案是Pecl的Clucene模块和Zend Framework的 Zend_Search_Lucene 模块,这两个东西目前我使用的感觉都不算太好,另外还有一种是使用 PHP的 Java扩展支持(有两种,一种是php_java扩展,一种是php_java的 bradge方式),这个感觉也比较怪异,最后还有一种知道的办法就是使用系统调用 java 命令执行Lucene功能。 这个没有试过,不知性能可以达到什么程度。

  在这里做个记号,等有了进一步的收获补进来。

3 thoughts on “Memcached和Lucene笔记”

  1. 默认单进程工作模式下,memcached的key set是原子操作。所谓高负载下会覆盖的担心,事实上是不会发生的,也就是说对同一个key来说,其value不会含有多次set的混淆结果。

Leave a Reply

Your email address will not be published. Required fields are marked *

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Anti-spam image