memcached 简单试用

memcached是很强大的工具,因为它可以支持分布式的共享内存缓存,大站都用它,对小站点来说,只要出得起内存,这也是好东西;首页所需要的内存缓冲区大小估计不会超过10K,更何况我现在也是内存土豪了,还在乎这个?

安装:ubuntu下还是方便啊

apt-get install memcached
apt-get install python-memcached

配置运行:因为是单机没啥好配的,改改内存和端口就行了

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分布更均匀,其他代码很直观我就不解释了。

 

    key = None
    if custom_key:
        custom_key = str(custom_key).encode("utf-8")
        if isinstance(base_key, ModelBase):
            base_key = "%s%s%s" % (base_key.__module__, split_char, base_key.__name__)
        elif isinstance(base_key, Model):
            base_key = base_key.__class__
            base_key = "%s%s%s" % (base_key.__module__, split_char, base_key.__name__)
        else:
            base_key = str(base_key)
        to_md5 = (len(custom_key) + len(base_key)) > 250
        if not to_md5:
            for char in custom_key:
                if ord(char) < 33 or ord(char) == 127:
                    to_md5 = True
                    break
        if to_md5:
            m = hashlib.md5()
            m.update(custom_key)
            custom_key = m.hexdigest()
        key = ("%s%s%s" % (base_key, split_char, custom_key)).lower()

 

源文:http://simple-is-better.com/news/351

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值