django-redis 缓存使用

Python 使用 redis

依赖

pip3 install redis

直接使用

import redis
# decode_responses=True得到的结果会自动解码(不是二进制数据)
r = redis.Redis(host='127.0.0.1', port=6379, db=1, password=None, decode_responses=True)

连接池使用

import redis
pool = redis.ConnectionPool(host='127.0.0.1', port=6379, db=1, max_connections=100, password=None, decode_responses=True)
r = redis.Redis(connection_pool=pool)


缓存使用

要额外安装 django-redis

# 1.将缓存存储位置配置到redis中:settings.py
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": "",
     }
 }
}

# 2.操作cache模块直接操作缓存:views.py
from django.core.cache import cache  # 结合配置文件实现插拔式
# 存放token,可以直接设置过期时间
cache.set('token', 'header.payload.signature', 300)
# 取出token
token = cache.get('token')

使用:
(1)处理session[非必要,除非服务器空间有非常大的限制]:配置settings.py

SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "default"

(2)作为程序中数据的缓存使用

  from django.core.cache import cache

缓存中存储数据

  cache.set(key, value, timeout=..)

缓存中读取数据

v = cache.get(key)

导入需要的模块

 from django.core.cache import cache
 from . import models

 def cache_index(change=False):
     print('从redis中查询数据')
     a_list = cache.get('article_list')
     if a_list is None or change == True:
         print('去数据库中查找数据')
         a_list = models.Article.objects.all()
         print('将查询到的数据加载到缓存中')
         cache.set('article_list', a_list)
         return a_list
原文地址:https://www.cnblogs.com/kai-/p/12403263.html