• django使用redis做缓存,及python操作redis


    django中使用redis

    1.直接使用

    
    import redis
    # 默认连接6379,没有密码设置,所以不用填面参数(填了报错),可以自己以配置文件启动(不要配置文件后台启动,启动连得还是6379端口),在配置文件可以修改host,port,password等,
    r = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True)  # decode_responses将二进制数据解析为字符串
    
    r.set('name','张超')
    r.setnx('hobby','打酱油')
    
    r.setex('age',10,18)  # 给age添加过期时间,参数2才是timeout
    r.mset({'a':1,'b':2, 'c':'good', 'd':'李四'})
    print(r.mget('a', 'b', 'c', 'd','name','bobby'))  # ['1', '2', 'good', '李四', '张超', None]
    
    r.incrby('a',100)
    print(r.mget('a', 'b', 'c', 'd','name','bobby'))  # ['101', '2', 'good', '李四', '张超', None]
    r.rpush('stus','bob', 'ben', 'jerry', 'tom', 'tank')  #
    print(r.lrange('stus',0,1))  # ['bob', 'ben']
    
    r.zadd('games', {'bob':97, 'ben':99, 'jerry':77,'tom':100})
    # 正序去倒数前三名
    print(r.zrange('games',0,2))  #  ['jerry', 'bob', 'ben']
    # 反序取前三名
    print(r.zrevrange('games',0,2))  # ['tom', 'ben', 'bob']
    

    2.reids 连接池版

    pool = redis.ConnectionPool(host='localhost', port=6379, db=0, decode_responses=True,max_connections=100)
    redis.Redis(connection_pool=pool)
    
    print(r.zrevrange('games',0,2))  # ['tom', 'ben', 'bob']
    

    django 本地缓存的使用

    import redis
    pool = redis.ConnectionPool(max_connections=100,)
    r = redis.Redis(connection_pool=pool)
    
    # from libs import tx_sms
    #
    # code = tx_sms.get_sms_code()
    # print(code)
    # r.setex('sms', 300, code)
    
    import django
    import os
    os.environ.setdefault('DJANGO_SETTINGS_MODULE','zhike.settings.dev')
    django.setup()
    from user import models
    
    user_query = models.User.objects.all()
    # redis不能直接存对象
    # r.setex('user_query', 300, user_query)
    
    from django.core.cache import cache
    # django缓存使用本地缓存,可以直接存对象,是因为内部将使用pickle将对象做了序列化,
    # 我们没在全局配置CACHE,就默认使用django全局配置的CACHE(本地缓存),在global_settings文件查看全局配置
    # from django.conf import global_settings
    '''
    CACHES = {
        'default': {
            'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
        }
    }
    在LocMemCache类中写了set,get,incr,add,delete,clear等方法
    '''
    cache.set('user_query',user_query,300)
    print(cache.get('user_query'))
    

    django使用redis做缓存

    需安装插件:pip install django-redis,使用本插件,在django中可以直接使用redis存、取queryset对象

    # django的setting文件配置使用redis做缓存  可以缓存直接queryset对象
    CACHES = {
        "default": {
            "BACKEND": "django_redis.cache.RedisCache", # 默认使用DefaultClient类下的方法做缓存的操作,还有ShardClient,HerdClient。
            "LOCATION": "redis://127.0.0.1:6379/10",  # 默认是redis编号为0的数据库
            "OPTIONS": {
                "CLIENT_CLASS": "django_redis.client.DefaultClient",
                "CONNECTION_POOL_KWARGS": {"max_connections": 100},
                "DECODE_RESPONSES": True,
                "PSAAWORD": "",
            }
        }
    }
    
  • 相关阅读:
    DTD和Schema的区别
    在使用Maven中出现的小错误
    struts2 中 paramsPrepareParamsStack 拦截器
    Hibernate的save()和persist()的区别
    Spring学习笔记
    Hello Spring
    Hibernate3 和Hibernate4 在配置文件上的区别
    今日学习-商品数据库查询
    Java中避免表单重复提交
    Java学习笔记
  • 原文地址:https://www.cnblogs.com/zhangchaocoming/p/13138833.html
Copyright © 2020-2023  润新知