redis数据库-3-1-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))
############### 结束线 ###############
############### 结束线 ###############
############### 结束线 ###############
技术改变命运