Memcached
顾名思义就是memory + cache,是关于内存缓存的,专业讲是一种高性能且分布式的内存对象缓存系统
。它在内存中维护一个庞大的哈希表。通过使用Memcached,它首先会检查客户端的请求数据是否在Memcached中,如果存在的话,则将它发送给客户端,不会去查数据库。如果不存在,就会去查数据库,再将查到的数据缓存一份到Memcached,然后发送给客户端。Memcached的数据会和数据库中的数据同步更新。
1.1 管理员权限打开终端,切换至含有memcached.exe的目录,并执行如下命令:
memcached -d install
1.2 启动memcached服务,并执行如下命令:
net start "Memcached Server"
1.3 pip安装Python操作Memcached的绑定程序
pip install python-memcached
1.4 Django的settings.py中添加配置:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '主机IP: 11211,'
# Memcached可以在多台服务器上共享缓存(分布式),通过LOCATION指定多台机器的地址和端口号,如:
"""
'LOCATION': [
’10.12.111.10: 11211‘,
'10.12.111.11: 11211',
]
"""
}
}
models.py
from django.contrib.auth.models import AbstractUser
from django.db import models
class MyUser(AbstractUser):
# verbose_name表示在admin页面中显示的名称
tel = models.CharField(max_length=20, verbose_name='联系电话')
qq = models.CharField(max_length=15, verbose_name='QQ')
wechat = models.CharField(max_length=20, verbose_name='微信')
class Meta:
db_table = "myusers"
verbose_name_plural = '用户' # 设置在admin下显示的名称,plura指复数形式,即系统不会在渲染时加'+'
views.py
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.decorators import login_required
# 使用AbstractUser时,注册用户使用create_user,而不是create。且create_user在数据库中存储的密码为加密模式。
MyUser.objects.create_user(username=name, password=pwd, address=address, phone=phone)
# 用户登录时使用authenticate()验证,错误返回None
user = authenticate(username=name, password=pwd)
# 验证成功后使用login()来开启session
login(request, user)
# 在重定向至登录后页面时,将错误信息再次重定向
@login_required
def go_success(request):
# 使用login_required装饰器时,只有在用户登录的情况下才能
# 调用,否则,则未登录用户被重定向到settings.py中配置的LOGIN_URL指定的
# 路由地址;或者通过@login_required(login_url="未登录重定向地址")设置。 return render(request, 'auth_app/result.html')
"""
settings.py中设置:
LOGIN_URL = "/auth/noLogin/" # 未登录用户跳转路径
AUTH_USER_MODEL = 'auth_app.MyUser' # 使用AbstractUser时,需将子类在settings.py中注册一下
"""