Redis应用(django)

自定义使用redis

创建url

定义单例模式连接池

import redis
# 连接池
POOL = redis.ConnectionPool(host='10.211.55.4', port=6379,password='luffy1234',max_connections=1000)

导入连接池,并连接

import redis
from django.shortcuts import render,HttpResponse
from utils.redis_pool import POOL

def index(request):
    conn = redis.Redis(connection_pool=POOL)
    conn.hset('kkk','age',18)
    
    return HttpResponse('设置成功')

def order(request):
    conn = redis.Redis(connection_pool=POOL)
    conn.hget('kkk','age')

    return HttpResponse('获取成功')

使用第三方组件

安装

pip3 install django-redis 

连接池不用写,内部帮我们定义好了连接池。

redis配置

CACHES = {
	"default": {
		"BACKEND": "django_redis.cache.RedisCache",
		"LOCATION": "redis://127.0.0.1:6379",
		"OPTIONS": {
			"CLIENT_CLASS": "django_redis.client.DefaultClient",
			"CONNECTION_POOL_KWARGS": {"max_connections": 100}#最大连接数
			# "PASSWORD": "密码",
		}
	}
}  

使用

import redis
from django.shortcuts import render,HttpResponse
from django_redis import get_redis_connection


def index(request):
	conn = get_redis_connection("default")
	return HttpResponse('设置成功')
def order(request):
	conn = get_redis_connection("back")
	return HttpResponse('获取成功')

可以写多个,自动选择链接

 

import redis
from django.shortcuts import render,HttpResponse
from django_redis import get_redis_connection

def index(request):
    conn = get_redis_connection("default")
    return HttpResponse('设置成功')
def order(request):
    conn = get_redis_connection("back")
    return HttpResponse('获取成功')

高级配置

1. 全站缓存

给整个网站都设置缓存

设置中间件

from django.shortcuts import render,HttpResponse
import time


def index(request):
    ctime = str(time.time())
    return HttpResponse(ctime)

def order(request):
    ctime = str(time.time())
    return HttpResponse(ctime)  

还可以设置超时时间

2. 单视图

全栈缓存太大了,我们如何让它进行单页面缓存。

去掉中间件,加装饰器

from django.shortcuts import render,HttpResponse
import time
from django.views.decorators.cache import cache_page
from rest_framework.throttling import SimpleRateThrottle

@cache_page(60 * 15)
def index(request):
    ctime = str(time.time())
    return HttpResponse(ctime)

def order(request):

    return render(request,'order.html')

3. 局部页面

补充:

rest framework框架访问频率限制推荐放到 redis/memecached

# redis配置
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            "CONNECTION_POOL_KWARGS": {"max_connections": 100}
            # "PASSWORD": "密码",
        }
    }
}
# FileBased配置
# CACHES = {
#     'default': {
#         'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
#         'LOCATION': '/var/tmp/django_cache',
#     }
# }
# Memcached配置
# CACHES = {
#     'default': {
#         'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
#         'LOCATION': '127.0.0.1:11211',
#     }
# }  

设置哪个,缓存放在哪。

memarcahe不能做持久化。

posted @ 2018-06-11 15:24  高~雅  阅读(918)  评论(0编辑  收藏  举报