Python中用memcached来减少数据库查询次数的教程


当前第2页 返回上一页


终于轮到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结构,最常使用的就是两个函数了:

  1.     第一个就是set(key,value,timeout),这个很简单就是把key映射到value,timeout指的是什么时候这个映射失效
  2.     第二个就是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论坛

返回前面的内容

相关阅读 >>

discuz二次开发基本知识总结

开通使用七牛云存储的cdn来加速网站静态文件的图文教程

站长最喜欢的一些建站程序、cms介绍

discuz!使用技巧:如何隐藏论坛分类的名称?

解析htaccess伪静态的规则

discuz! x1.5 防cc脚本设置方法

discuz! x2去除forum.php尾巴的方法小结

win2008 r2 下 iis7.5+php5.2.17+mysql5.5.16+zend3.3.3

[php] 我的微型论坛的简单教程[已完成]

nginx 伪静态rewrite正则资源汇总

更多相关阅读请进入《Discuz论坛》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...