mysql是一个软件,帮助开发者对一台机器的硬盘进行操作。
redis是一个软件,帮助开发者对一台机器的内存进行操作。
特点:
a. 持久化 --AOF、RDB b. 单进程、单线程 c. 5大数据类型 redis={ k1:'123', 字符串 k2:[1,2,3,4,4,2,1], 列表 k3:{1,2,3,4}, 集合 k4:{name:123,age:666}, 字典 k5:{('alex',60),('eva-j',80),('rt',70),},有序集合 }
redis默认端口:6379
python连接redis的模块
pip3 install redis
基本使用:
打开cmd输入以下命令启动redis
redis-server.exe
打开新的命令行窗口,输入:
redis-cli.exe -h 127.0.0.1 -p 6379 回车
在python中:
redis_pool.py
#把连接池做成单例模式 import redis POOL = redis.ConnectionPool(host='127.0.0.1', port=6379,max_connections=1000)
s1.py
# 创建连接
# import redis # conn = redis.Redis(host='127.0.0.1',port=6379) # conn.set('x1','wanghuaqiang',ex=5) #ex=5是设置超时时间 # val = conn.get('x1') # print(val) # 连接池(推荐使用) # import redis # pool = redis.ConnectionPool(host='127.0.0.1', port=6379,max_connections=1000) # conn = redis.Redis(connection_pool=pool) # conn.set('foo', 'Bar') from redis_pool import POOL while True: key = input('请输入key:') value = input('请输入value:') # 去连接池中获取连接 conn = redis.Redis(connection_pool=POOL) # 设置值 conn.set(key, value) #连接池注意:连接池只创建一次
使用连接池本质:维护一个已经和服务端连接成功的socket,以后再次发送数据时,直接获取一个socket,直接send数据
django中操作redis
pip3 install django-redis
在settings中进行配置
# 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('获取成功')
应用:
1 全站缓存--中间件
在settings中间进行配置
# 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": "密码", } } }
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 @cache_page(60 * 15) def index(request): ctime = str(time.time()) return HttpResponse(ctime)
3 局部视图缓存
views.py
from django.shortcuts import render
def order(request): return render(request,'order.html')
{% load cache %} <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>Title</title> <meta name="viewport" content="width=device-width, initial-scale=1"> </head> <body> <h1>asdfasdfasdf</h1> <div> asdf </div> {% cache 10 sdfsdfsd32fd %} <!-- 10s后消失 --> <div>asdfasdf</div> {% endcache %} </body> </html>