redis是什么?
redis是用于操作内存的一个软件。

1 1、可以做持久化,且有两种模式:AOF和RDB 2 2、相当于一个大字典,存储的是key/value 3 3、单进程单线程,请求多则排队,一个个处理 4 4、支持5大数据类型 5 a.字符串 6 b.列表 7 c.集合 8 d.字典 9 e.有序集合
1.服务器上安装redis
pass
2.python安装redis模块
pip3 install redis
3.redis的基本连接和增查
import redis # redis的基础操作 conn = redis.Redis(host='182.254.210.59',port=6379,password='123123') # 创建连接redis conn.set('k1','v1') # 往redis中插入一条数据 val = conn.get('k1') # 查询插入的数据 print(val) # 打印值
4.redis的连接池创建及使用
pool = redis.ConnectionPool(host='182.254.210.59',port=6379,password='123123') # 创建一个连接池 conn = redis.Redis(connection_pool=pool,max_connections=1000) # 调用连接池,并指定最多连接数 conn.set('k2','v2') # 设置值 print(conn.get('k2')) # 取值 如果想更方便的使用,则创建一个redis_pool的连接池,将pool = redis.ConnectionPool(host='182.254.210.59',port=6379,password='123123',max_connections=1000)放到这个文件中,具体方法 在redis_pool文件中 import redis POOL = redis.ConnectionPool(host='182.254.210.59',port=6379,password='123123',max_connections=1000) 在redis操作文件中 from redis_oper.redis_pool import POOL conn = redis.Redis(connection_pool=POOL) conn.set('k2','v2') print(conn.get('k2'))
5.Django中操作redis
安装django-redis模块
pip3 install django-redis
在setting配置:
# reids_configure CACHES = { "default":{ "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://182.254.210.59:6379", # 连接地址 "OPTIONS": { "CLIENT_CALSS": "django_redis.client.DefaultClient", "CONNECTION_POOL_KWARGS": {"max_connections": 1000}, "PASSWORD":"123123", # 连接密码 } } }
在views中调用
def index(request): conn = get_redis_connection('default') conn.hset('dic','age',22) return HttpResponse('设置成功') def order(request): conn = get_redis_connection('default') val = conn.hget('dic','age') val = val.decode('utf-8') return HttpResponse('取值成功 '+val)
6.全站缓存
全站缓存要用到中间件了,在settings中间件配置的 MIDDLEWARE 模块中,加两条配置
'django.middleware.cache.UpdateCacheMiddleware', # 加到中间件的最上面 'django.middleware.cache.FetchFromCacheMiddleware', # 加到中间件的最下面 附加: CACHE_MIDDLEWARE_ALIAS = "" # 设置缓存的别名 CACHE_MIDDLEWARE_SECONDS = "" # 设置缓存的超时时间 CACHE_MIDDLEWARE_KEY_PREFIX = ""
全站缓存指的是每次在请求过来的时候先经过中间件,然后到缓存,如果缓存中没有的话去就去数据库中找,在返回数据的时候顺便放到缓存中一份
7.单个视图缓存
方式一: 给想要被缓存的单个视图加装饰器
from django.views.decorators.cache import cache_page # 在views中调用 @cache_page(60 * 15) def index(request): ...
方式二:在配置url的同时直接指定缓存
from django.views.decorators.cache import cache_page urlpatterns = [ url(r'^foo/([0-9]{1,2})/$', cache_page(60 * 15)(my_view)), ]
8.局部视图缓存
8.1 引入TemplateTag
{% load cache %}
8.2 使用缓存
{% cache 5000 缓存key %} # 指5000秒 缓存key 指缓存存放的地方 <div></div> # 要被缓存的单独一块内容 {% endcache %}