redis

 链接

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)
Views.py

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>
order.html

 

posted @ 2020-07-02 10:27  zh_小猿  阅读(149)  评论(0编辑  收藏  举报