memcached

memcached是一个高性能的分布式内存对象缓存系统。通过在内存中缓存数据可以提高对系统的访问速度,减少对其后台的读写。memcached的守护进程是C语言编写的,但是客户端是由多种语言编写的。我们主要关注python和memcached结合。

首先安装memcached

yum install memcached

安装完memcached后,也许你想做一些配置,通过下面的命令可以找到memcached的相关文件。

[root@kramer memcached]# rpm -qa | grep memcached
memcached-1.4.4-3.el6.x86_64
[root@kramer memcached]# rpm -ql memcached-1.4.4-3.el6.x86_64
/etc/rc.d/init.d/memcached
/etc/sysconfig/memcached
/usr/bin/memcached
/usr/bin/memcached-tool
/usr/share/doc/memcached-1.4.4
/usr/share/doc/memcached-1.4.4/AUTHORS
/usr/share/doc/memcached-1.4.4/CONTRIBUTORS
/usr/share/doc/memcached-1.4.4/COPYING
/usr/share/doc/memcached-1.4.4/ChangeLog
/usr/share/doc/memcached-1.4.4/NEWS
/usr/share/doc/memcached-1.4.4/README
/usr/share/doc/memcached-1.4.4/protocol.txt
/usr/share/doc/memcached-1.4.4/readme.txt
/usr/share/doc/memcached-1.4.4/threads.txt
/usr/share/man/man1/memcached.1.gz
/var/run/memcached

我们可以看到 yum 已经把memcached注册到了/etc/init.d 以及 /etc/rc.d中,所以,我们可以启动memcached 如下:

/etc/init.d/memcached start

可以看到启动后的进程是:

[root@kramer memcached]# ps -ef | grep memcached
498      31751     1  0 Jan14 ?        00:00:00 memcached -d -p 11211 -u memcached -m 64 -c 1024 -P /var/run/memcached/memcached.pid

注意这里的-p 11211说明 memcached 监听端口是 11211.

启动完毕后,可以安装memcached 的 python 客户端,然后编写代码测试。

安装客户端用如下命令:

pip install python-memcached

然后我们编写一个python 来测试memcached 的威力。

#!/usr/bin/python

import memcache,random,time,timeit

mc=memcache.Client(['127.0.0.1:11211'])

def compute_square(n):
    value=mc.get('sq:%d' % n)
    if value is None:
        time.sleep(0.001)
        value=n*n
        mc.set('sq:%d' % n,value)
    return value

def make_request():
    compute_square(random.randint(0,5000))
    
print 'Ten successive runs:',
for i in range(1,11):
    print '%0.2fs' % timeit.timeit(make_request,number=2000),
print

运行一下:

[root@kramer 20140115]# ./make_square_memcache.py
Ten successive runs: 2.32s 1.56s 1.19s 0.82s 0.69s 0.53s 0.48s 0.39s 0.39s 0.29s

最开始运行 cache中没有多少缓存,所以运行2000次很慢要2.32秒。 但是越往后越快,只需要0.29秒。

 

原文地址:https://www.cnblogs.com/kramer/p/3520738.html