python-memcached安装和使用

Memcached:是一个免费开源的、高性能的、具有分布式内存对象的缓存系统,它通过减轻数据库负载加速动态Web应用
它和redis同样都像一个巨大的内存条,从内存条里面读取数据肯定比从硬盘里面读取数据库要快得多

安装

1.下载:
32bit:下载 memcached-win32-1.4.4-14.zip
64bit:如果需要win64版,下载 memcached-win64-1.4.4-14.zip

2.下载好之后,运行命令提示符(以管理员身份运行)

3.切到memcached目录下,执行安装memcached命令:

memcached memcached.exe -d install

4.再执行启动命令:

memcached.exe -d start

memcached -help是查看命令说明
image
image

memcached基本操作

连接:

import memcache
mc = memcache.Client(['127.0.0.1:11211'],debug=True)

此后操作memcache需要用mc对象来点命令
1.set,get:存,取

mc.set('name','max',120)  # 缓存只保存120秒
print(mc.get('name'))
#  max

2.set_multi:一次性设置多个值,参数必须是一个字典。
get_multi:一次性拿多个值,参数必须是一个列表套存储值的键,这些键可以是通过set存入,也可以通过set_multi存入

mc.set('username','max',120)
# print(mc.get('name'))
mc.set_multi({'name':'jerry','age':19})
print(mc.get_multi(['name','age','username']))

3.delete:删除元素
delete_multi:一次性删除多个,参数是一个列表
image
4.incr:自增1;decr:自减1。参数都是数据对应的键

mc.set('age',18)
print(mc.get('age'))
mc.incr('age')
print(mc.get('age'))
mc.decr('age')
print(mc.get('age'))

5.add、replace、set都可以用来存数据,存储的参数都为('键','值','期限');
add:仅当存储空间中不存在键相同的数据时才保存
image
replace:仅当存储空间中存在键相同的数据时才保存
image
set:与add和replace不同,无论何时都保存
image

django中使用memcached

在django中使用memcached,通过cache.set和cache.get来获取缓存。其中cache.set第三个参数为存储时间,时间一过缓存立即失效
首先在settings.py中配置:
settings.py:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': '127.0.0.1:11211',
    }
}

image
views.py:

from django.core.cache import cache
import time
def index(request):
    result = cache.get('book_list2')
    if not result:
        result = ['2','2','3']
        cache.set('book_list2',result,3)
        print('走了数据库')
        print(result)
        print(time.time())
        return HttpResponse('hhh')
    print('走了缓存')
    print(result)
    print(time.time())
    return HttpResponse('hhh')

image

连接多个memcached

mc = memcache.Client(['127.0.0.1:11211','xxx.xxx.x.xxx:xxxxx'],debug=True)

这样,我们就连接了两个memcached,一个本机的,一个别人的ip地址的。我们还想要连接更多的,就只需要在列表中添加ip地址就行了。
但是,因为我们连接了多个memcached,而我们有没有设置存储算法(就是规定哪些变量往哪个ip地址存),所以我们设置的memcached变量就会随机的存储在我们连接的memcached中,并且只会在一个中存储。
注意:我们要想连接到别人的memcached,那么别人的memcached必须开启了的,而且还必须设置可连接的ip地址,像在局域网下就要设置-l参数为0.0.0.0。防火墙也要关闭

posted @ 2023-06-20 14:00  ERROR404Notfound  阅读(146)  评论(0编辑  收藏  举报
Title