• Redis应用(django)


    自定义使用redis

    创建url

    定义单例模式连接池

    import redis
    # 连接池
    POOL = redis.ConnectionPool(host='10.211.55.4', port=6379,password='luffy1234',max_connections=1000)

    导入连接池,并连接

    import redis
    from django.shortcuts import render,HttpResponse
    from utils.redis_pool import POOL
    
    def index(request):
        conn = redis.Redis(connection_pool=POOL)
        conn.hset('kkk','age',18)
        
        return HttpResponse('设置成功')
    
    def order(request):
        conn = redis.Redis(connection_pool=POOL)
        conn.hget('kkk','age')
    
        return HttpResponse('获取成功')

    使用第三方组件

    安装

    pip3 install django-redis 

    连接池不用写,内部帮我们定义好了连接池。

    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('获取成功')

    可以写多个,自动选择链接

     

    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. 全站缓存

    给整个网站都设置缓存

    设置中间件

    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
    from rest_framework.throttling import SimpleRateThrottle
    
    @cache_page(60 * 15)
    def index(request):
        ctime = str(time.time())
        return HttpResponse(ctime)
    
    def order(request):
    
        return render(request,'order.html')

    3. 局部页面

    补充:

    rest framework框架访问频率限制推荐放到 redis/memecached

    # 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": "密码",
            }
        }
    }
    # FileBased配置
    # CACHES = {
    #     'default': {
    #         'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
    #         'LOCATION': '/var/tmp/django_cache',
    #     }
    # }
    # Memcached配置
    # CACHES = {
    #     'default': {
    #         'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
    #         'LOCATION': '127.0.0.1:11211',
    #     }
    # }  

    设置哪个,缓存放在哪。

    memarcahe不能做持久化。

  • 相关阅读:
    Python正课15 —— 流程控制之while循环
    Python正课14 —— 深浅Copy
    Python正课13 —— 流程控制之if判断
    Python正课12 —— 成员运算 与 身份运算
    Python正课11 —— 逻辑运算
    Python正课10 —— 条件
    Python正课9 —— 可变不可变类型
    Python正课8 —— 运算符
    Python正课7 —— 与用户交互
    Python正课6 —— 垃圾回收机制
  • 原文地址:https://www.cnblogs.com/gaoya666/p/9141497.html
Copyright © 2020-2023  润新知