zoukankan      html  css  js  c++  java
  • redis数据库-django操作redis

    ###############   django操作redis    ###############

    # django操作redis,
    # 下载django-redis,pip install django-redis,
    # 有了这个,就不需要自己写什么连接池了,django-redis会自动给我们创建连接池,但是需要配置一下,这种在django项目中就是这么做,但是自定义的也要会因为这个只能django项目用
    # redis配置,
    # django-redis 配置,可以配置多个
    CACHES = {
        "default": {  # 一个redis连接
            "BACKEND": "django_redis.cache.RedisCache",
            "LOCATION": "redis://192.168.100.128:6379",  # redis的IP和端口
            "OPTIONS": {
                "CLIENT_CLASS": "django_redis.client.DefaultClient",
                "CONNECTION_POOL_KWARGS": {"max_connections": 1000},  # 连接池最大连接数
                "PASSWORD": "ji10201749"  # 密码
            },
        },
    }
    
    # 有了这个配置就可以了,
    # 使用的时候,直接引入,
    from  django_redis import get_redis_connection
    conn=get_redis_connection("default")

     ###############   redis操作购物车第一种结构    ###############

    import redis
    pool =redis.ConnectionPool(host='192.168.100.128',port=6379,password='ji10201749',max_connections=1000)
    conn= redis.Redis(connection_pool=pool)
    
    # v = conn.keys()  # 获取所有的key
    # print(v)
    # conn.flushall()  # 删除所有的key,清空
    
    """
    购物车的数据结构:
    用户id:6
    shopping_car= {
        6:{
                11:{
                     "title":"python入门",
                     "src": XXX.png
                }
        }
    
    }
    """
    
    # 购买第一个商品:
    # 怎么存储:
    # conn.hset(字典名,key,value)
    data_dict = {
                11:{
                     "title":"python入门",
                     "src":"XXX.png"
                }
        }
    import json
    conn.hset('shopping_car',6,json.dumps(data_dict))
    # print(conn.hget("shopping_car",6))
    
    # 购买第二个商品:
    car = conn.hget("shopping_car",'6')  # 这个获取到是字节类型,
    car_str = car.decode('utf-8')  # 这是转换为字符串类型
    # print(v)
    # print(type(v))  # 字符串类型
    
    # 字节和字符串的转换,第二种方法:
    # car_str = str(car,encoding='utf-8')
    # print(car_str)
    # car_byte = bytes(car_str,encoding='utf-8')
    # print(car_byte)
    
    car_dict = json.loads(car_str)
    # print(car_dict)
    # print(type(car_dict))  # 转换成字典,
    
    car_dict["12"] ={
                     "title":"linux入门",
                     "src":"XXX.png"
                }
    # print(car_dict)  # 这个时候就有两个了,
    conn.hset('shopping_car','6',json.dumps(car_dict))  # 放入redis,
    
    #########################################################################
    # 所以每次更新都是把数据拿出来,然后再放进去,
    # 但是这个流程有问题,

    ###############   redis操作数据库第二版    ###############

    # redis操作购物车
    import redis
    pool =redis.ConnectionPool(host='192.168.100.128',port=6379,password='ji10201749',max_connections=1000)
    conn= redis.Redis(connection_pool=pool)
    # 第二种购物车的数据结构
    '''
    shopping_car_用户id_课程id={
        title:
        img:
        policy:{
            1:{'name':30天价格策略,price:299}
            2:{'name':30天价格策略,price:299}
            3:{'name':30天价格策略,price:299}        
        }
        defaulet_policy_id:
    }
    '''
    shopping_car_key = 'shopping_car_{}_{}'
    user_id=123
    course_id=123
    shopping_car_key=shopping_car_key.format(user_id,course_id)
    
    
    policy={
    1:{'name':" 30天价格策略","price":299},
    2:{'name': "60天价格策略","price": 699},
    3: {'name':" 90天价格策略","price": 999},
    }
    import json
    conn.hmset(shopping_car_key,{
            "title":1,
            "img": "123.png",
            "policy": json.dumps(policy),
            "defaulet_policy_id":"1"
               })
    # print(conn.hgetall(shopping_car_key))
    
    shopping_car_key_all = shopping_car_key.format(user_id,'*')
    all_key = conn.scan_iter(shopping_car_key_all)
    
    shopping_car_list = []
    for i in all_key:
        course_id = str(i,encoding='utf-8').split('_')[2]
        # print(course_id)
        course_info = {
            "title":str(conn.hget(i,"title"),encoding='utf-8'),
            "img":conn.hget(i,"img").decode("utf-8"),
            "policy":json.loads(conn.hget(i,"policy")),
            "default":conn.hget(i,"defaulet_policy_id").decode('utf-8')
        }
        shopping_car_list.append(course_info)
        print(type(course_info))
        print(course_info)
        print(json.dumps(course_info))

    ###############   结束线    ###############

    ###############   结束线    ###############

    ###############   结束线    ###############

  • 相关阅读:
    课后作业03-以淘宝网为例从质量的六个属性描述分析
    软件体系架构课后作业02-架构漫谈阅读笔记
    java中怎样跳出当前的多层循环嵌套
    redis二级缓存的五种数据类型的常用命令
    递归算法 菲波那切数列 (一个楼梯有n阶,每一次可以走一个台阶或者二个台阶请问总共有几种走法)
    restful代码风格
    java开发工程师面试题总结(适用于1-2年工作经验的人)
    Java中HashMap与HashTable的联系与区别
    HashMap扩容因子默认是0.75?底层数据结构? hash函数处理冲突的集中方式?
    设计模式
  • 原文地址:https://www.cnblogs.com/andy0816/p/12074734.html
Copyright © 2011-2022 走看看