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 %}
浙公网安备 33010602011771号