django缓存配置redis
django中默认使用Memcache 作为缓存,一旦重启服务,数据就会丢失,不能持久化。
在项目中,过多需要缓存的不是简单数据,而是对象,比如 model类对象
1 2 3 4 5 6 7 8 9 10 11 12 13
| import redis pool = redis.ConnectionPool(max_connections=100, decode_responses=True) rdb = redis.Redis(connection_pool=pool)
user_query = User.objects.all() rdb.setex('user_query', 300, user_query)
from user.models import User from django.core.cache import cache
cache.set('user_query', user_query) print(cache.get('user_query'))
|
django缓存配置redis
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/0", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", "CONNECTION_POOL_KWARGS": {"max_connections": 100}, "DECODE_RESPONSES": True, "PASSWORD": "", } } }
from django.core.cache import cache
cache.set('token', 'header.payload.signature', 300)
token = cache.get('token')
|
django接口缓存
后台接口是提供数据库的,IO操作慢,可以将数据存储在缓存中,接口数据从缓存中调用
一般将大量访问(数据时效性要求不是很苛刻)的接口建立缓存
数据缓存思想:数据先走缓存,有直接返回,没有走数据库(同步到缓存)
首页轮播图需要经常访问,将轮播图的查询接口 建立缓存。
1 2 3 4 5 6 7 8
| def list(self, request, *args, **kwargs): data = cache.get('banner_cache') if not data: print('在走数据库') response = super().list(request, *args, **kwargs) cache.set('banner_cache', response.data) return response return Response(data)
|