终于轮到memcached了,既然打算缓存,用文件做缓存的话还是有磁盘I/O,不如直接缓存到内存里面,内存I/O可就快多了。于是memcached顾名思义就是这么个东东。
memcached是很强大的工具,因为它可以支持分布式的共享内存缓存,大站都用它,对小站点来说,只要出得起内存,这也是好东西;首页所需要的内存缓冲区大小估计不会超过10K,更何况我现在也是内存土豪了,还在乎这个?
配置运行:因为是单机没啥好配的,改改内存和端口就行了
vi /etc/memcached.conf /etc/init.d/memcached restart
在python的网页应用中使用之
import memcache mc = memcache.Client(['127.0.0.1:11211'], debug=0)
memcache其实就是一个map结构,最常使用的就是两个函数了:
- 第一个就是set(key,value,timeout),这个很简单就是把key映射到value,timeout指的是什么时候这个映射失效
- 第二个就是get(key)函数,返回key所指向的value
于是对一个正常的sql查询可以这么干
sql = 'select count(*) from verycd' c = sqlite3.connect('verycd.db').cursor() # 原来的处理方式 c.execute(sql) count = c.fetchone()[0] # 现在的处理方式 from hashlib import md5 key=md5(sql) count = mc.get(key) if not count: c.execute(sql) count = c.fetchone()[0] mc.set(key,count,60*5) #存5分钟
其中md5是为了让key分布更均匀,其他代码很直观我就不解释了。
优化过语句1和语句2后,首页的平均生成时间已经降低到0.02秒,和discuz一个量级了;再经过语句3的优化,最终结果是首页生成时间降低到了 0.006秒左右,经过memcached寥寥几行代码的优化,性能提高了3300%。终于可以挺直腰板来看Discuz了)
更多相关Discuz论坛的内容来自木庄网络博客
标签:Discuz论坛
相关阅读 >>
win2008 r2 下 iis7.5+php5.2.17+mysql5.5.16+zend3.3.3
更多相关阅读请进入《Discuz论坛》频道 >>