###############   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. 干货 | MySQL数据库安全之审计

    干货 | MySQL数据库安全之审计 原创: 李勇 京东云开发者社区  今天 每家公司都希望业务高速增长,最好能出几个爆款产品或者爆款业务,从而带动公司营收高速攀升.但站在数据库管理员的角度,这却是实 ...

  2. usr/sbin/inetd

    root 4 0.0 1344 1204? S 17:09 0:10 /usr/sbin/inetd 运行 Internet 超级 服务器,它负责监听 Internet sockets 上的连接,并调 ...

  3. 91.一次性处理多条数据的方法:bulk_create,update,delete

    (1)bulk_create: 可以一次性的创建多个对象 示例代码如下: from django.http import HttpResponse from .models import Pulish ...

  4. 90.QuerySet API方法使用详解:distinct

    distinct:去掉获取的数据中的重复数据,这个方法如果底层使用的数据库是mysql,那么就不能传递任何参数. (1)比如以下我们想要实现提取所有价格超过80元的图书,并且删掉那些重复的,那么可以使 ...

  5. 吴裕雄--天生自然 PHP开发学习:表单 - 必需字段

    <?php // 定义变量并默认设为空值 $nameErr = $emailErr = $genderErr = $websiteErr = ""; $name = $ema ...

  6. ZJNU 1534 - Problem Robot--高级

    因为是从(0,0)点开始以1,3,9,27,....的步数走的 其实可以每走一步后,以机器人为中心,平面所有坐标全部缩小3倍 那么本应该走3步的路现在只需要走1步就可以到达那个点 那么对于机器人来说这 ...

  7. iPhoneX的后遗症要持续多久?

    iPhone X的推出算得上苹果历史上的大事件,这款梳着刘海头型的手机作为iPhone十周年纪念款手机,承载着苹果和整个产业链巨大的希望,正因如此,包括苹果在内的大量企业,把宝都压到了这款手机上.后来 ...

  8. Linux-使用syslog记录调试信息

    1.有三个函数:openlog.syslog.closelog 2.一般的log信息都在操作系统的/var/log/messages这个文件中存储着,但是ubuntu中是在/var/log/syslo ...

  9. 数据库T-SQL语言操作(T-SQL语句、数据库、表、视图、索引)

    T-SQL语言 按用途分四部分 数据定义语言(CREATE,DROP,ALTER) 数据操作语言(INSERT,DELETE,UPDATE) 数据查询语言(SELECT) 数据控制语言(GRANT,R ...

  10. mysql查看变量

    在MySQL客户端执行如下命令查看MySQL的数据存放位置: show global variables like "%datadir%"; 查看端口号 show global v ...