###############   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",'') # 这个获取到是字节类型,
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[""] ={
"title":"linux入门",
"src":"XXX.png"
}
# print(car_dict) # 这个时候就有两个了,
conn.hset('shopping_car','',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":""
})
# 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))

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

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

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

django框架基础-django redis-长期维护-20191220的更多相关文章

  1. django框架基础-ORM进阶-长期维护

    ###############    ORM进阶---contenttype    ################ 设计思路: """ 路飞有两种课,专题课和学位课, ...

  2. django框架基础-视图系统-长期维护

    ##################   什么是视图?     ####################### 视图: 1,一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受W ...

  3. django框架基础-路由系统-长期维护

    ##################   路由系统介绍    ####################### 路由系统就是路径和函数的对应关系, 路由系统可以看成支撑你这个网站的目录,就像是一本书一样 ...

  4. django框架基础-django模板语言-长期维护

    ##################     常用的模板语言       ####################### # django的模板语言, # # 只需要记两种特殊符号: # # {{ } ...

  5. django框架进阶-使用缓存-长期维护

    ###############   django-缓存页面    ############### ########################################### # 全站缓存, ...

  6. django框架进阶-ModelForm组件-长期维护

    ############################################################ """ 通常在Django项目中,我们编写的大部 ...

  7. django框架进阶-form组件-长期维护

    ##################     form组件做了什么事情?      ####################### 之前web开发的模式,以注册为例 1,要有一个注册页面,然后有一个f ...

  8. django框架基础-框架介绍-长期维护

    ###############    MVC架构介绍    ################ # MVC架构 # 一个软件框架有很多的模块,每一个模块有不同的功能 # 模块与模块之间相互配合来完成软件 ...

  9. Django框架02 /Django下载安装、url路由分发

    Django框架02 /Django下载安装.url路由分发 目录 Django框架02 /Django下载安装.url路由分发 1. django下载安装 2. pycharm创建项目 3. 基于D ...

随机推荐

  1. spyder.app制作图标

    安装了 anaconda3, 自带spyder, 但是只能在terminal 中打开, 非常不友好. 模仿 anaconda3/目录下 Anaconda-Navigator.app, 制作了 spyd ...

  2. 存储基本概念(lun,volume,HBA,DAS,NAS,SAN,iSCSI,IPSAN)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/liukuan73/article/det ...

  3. Python—程序设计:单例模式

    单例模式 单例模式(Singleton Pattern)属于创建型模式,它提供了一种创建对象的最佳方式.这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建,并提供一种访问其 ...

  4. h5-渐变的基本描述

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. eclipse配置tomcat详细步骤

    1.下载tomcat9并解压到D盘根目录下 2.Windows——>Preferences——>Server——>Runtime Environments——>Add 3.选择 ...

  6. 十二星座 英文名:Aries 金牛座 (4/21 - 5/20)的英文名: Taurus 双子座 (5/21 - 6/21)的英文名: Gemini 巨蟹座 (6/22 - 7/22)的英文名: Cancer 狮子座 (7/23 - 8/22)的英文名: Leo 处女座/室女座 (8/23 - 9/22)的英文名: Virgo 天秤座 (9/2

    十二星座的具体顺序是:白羊座(Aries).金牛座(Taurus).双子座(Gemini).巨蟹座(Cancer).狮子座(Leo).处女座(Virgo).天秤座(Libra).天蝎座(Scorpio ...

  7. js 选中div中的文本

    function selectText(element) { var text = document.getElementById(element); if (document.body.create ...

  8. Matlab高级教程_第四篇:Matlab高级函数_关键词:drawnow,addpoints,animatedline,getpoints

    0. MATLAB真实航母基本的工具,其中的函数/工具不计其数,而且有些函数/工具非常的炫酷.在MATLAB第四篇章把平时工作中用到的些许函数进行使用的讲解 主题1.:drawnow 解释:更新图窗并 ...

  9. dubbo的灰度发布

    1,什么是灰度发布 当一个接口实现,出现不兼容升级时,可以用版本号过渡,版本号不同的服务相互间不引用. 可以按照以下的步骤进行版本迁移: 在低压力时间段,先升级一半提供者为新版本 再将所有消费者升级为 ...

  10. IMX6开发板qt creator直接编译ARM架构程序

    除了通过 11.2.2 小节通过命令行的操作来编译在 iTOP-imx6 开发板上运行的程序,还可以直接在 qtcreator 上设置,然后每次编译的程序都可以在开发板上运行.如下图所示,打开 qtc ...