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))

 

###############   結束線    ###############

 

###############   結束線    ###############

 

###############   結束線    ###############


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM