python Memcached用法示例

memcache是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的、需要频繁访问数据库的网站访问速度提升效果十分显著。

MemCache的工作流程如下:先检查客户端的请求数据是否在memcached中,如有,直接把请求数据返回,不再对数据库进行任何操作;如果请求的数据不在memcached中,就去查数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存一份到memcached中(memcached客户端不负责,需要程序明确实现);每次更新数据库的同时更新memcached中的数据,保证一致性;当分配给memcached内存空间用完之后,会使用LRU(Least Recently Used,最近最少使用)策略加上到期失效策略,失效数据首先被替换,然后再替换掉最近未使用的数据。

现在有各种memcached的python客户端,这里我使用的是pymemcache。接下来的代码示例:在进行一个花销很大的整数平方操作之前,代码首先会检查Memcache中是否已经保存了之前计算过的答案。如果缓存中已经存在相应的答案,那么不需要重复计算,就能将答案立刻返回。反之,则需进行计算,并将答案存储在缓存中,然后将答案返回。

示例运行的系统:Ubuntu20。

首先,输入下列命令,安装pymemcache和memcache

pip install pymemcache
pip install python3-memcached

然后,需要启动memcached

memcached -d -m 10 -u root -l 127.0.0.1 -p 11211 -c 256 -P /tmp/memcached.pid
  • -d选项是启动一个守护进程,
  • -m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,
  • -u是运行Memcache的用户,我这里是root,
  • -l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址127.0.0.1,
  • -p是设置Memcache监听的端口,我这里设置了11211,最好是1024以上的端口,
  • -c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
  • -P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid

基本的memcache的操作如下:

from pymemcache.client.base import Client


mc = Client(('127.0.0.1', 11211))
mc.set('aa:', 123)

value = mc.get('aa:')
print(value)

本博客描述的示例:

from pymemcache.client.base import Client
import time
import timeit
import random


# 计算平方的函数,若缓存中有就直接返回缓存的数据,若没有就重新计算,并写入缓存中
def compute_square(mc, num):
    value = mc.get('sq:%d' % num)
    if value is None:
        time.sleep(0.02)
        value = num * num
        mc.set('sq:%d' % num, value)
    return value


def mem_cache():
    mc = Client(('127.0.0.1', 11211))

    def make_request():
        compute_square(mc, random.randint(0, 15))

    print('Ten successive runs:')
    for i in range(1, 11):
        print('%.2fs' % timeit.timeit(make_request, number=10), end=' ')
    print()


if __name__ == '__main__':
    mem_cache()

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

楊木木8023

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值