2018-11-14 10:07:39

购物车有思路,用django中redis来做!!!具体思路参考下面笔记

回学校后,把笔记里面面试题都认真整理一下!!!!!!

越努力,越幸运!永远不要高估自己!

redis用于操作内存!可以用django内置的redis做,详情参考

关于 redis具体使用可以参考: http://www.cnblogs.com/wupeiqi/articles/5132791.html

在Django中使用redis 可以参考 : http://www.cnblogs.com/wupeiqi/articles/5246483.html

redis列表操作

import redis
"""
redis = { k1:[1,2,3,43,45]
}
""" conn = redis.Redis(host='47.94.172.250',port=6379,password='Luffy!4321') # 左插入
# conn.lpush('k1',11)
# 右插入
# conn.rpush('k1',33) # 左获取
# val = conn.lpop('k1')
# val = conn.blpop('k1',timeout=10) # hang住 # 右获取
# val = conn.rpop('k1')
# val = conn.brpop('k1',timeout=10) # hang住 # conn.lpush('k1',*[11,22,33,44,55,66,77,88,99,66,666,2234,345234,234]) def list_iter(key,count=100):
""""
  生成器实现列表读取,
  使用了yield 为数不多的自己使用了yield
""""
index = 0
while True:
data_list = conn.lrange('k1', index, index+count-1)
if not data_list:
return
index += count for item in data_list:
yield item print(conn.lrange('k1',0,101)) for item in list_iter('k1',count=3):
print(item)

redis中pipeline的使用

import redis
"""
redis = { k1:[1,2,3,43,45]
}
""" conn = redis.Redis(host='47.94.172.250',port=6379,password='Luffy!4321') pipe = conn.pipeline(transaction=True)
pipe.multi() pipe.set('k2','')
pipe.hset('k3','n1',666)
pipe.lpush('k4','laonanhai') pipe.execute()

贴上笔记!!!

s9day111 

内容回归:
1. django rest framework 2. git协同开发
a. 怎么通过git做得协同开发? b. 是否做代码review? c. 开发过程中出现bug如何做? d. git rebase作用? e. 给别人开源代码贡献力量。 f. 使用的github、gitlab ? PS:隐藏明感信息 3. orm操作
- select_related,连表操作,相当于主动做join
- prefeth_related,多次单表操作,先查询想要的数据,然后构造条件,如:id=[1,2,3],再次查询其他表根据id做条件。
- only
- defer
- F
- Q
- 通过ORM写偏原生SQL:
- extra
Entry.objects.extra(select={'new_id': "select col from sometable where othercol > %s"}, select_params=(1,))
Entry.objects.extra(where=['headline=%s'], params=['Lennon'])
Entry.objects.extra(where=["foo='a' OR bar = 'a'", "baz = 'a'"])
Entry.objects.extra(select={'new_id': "select id from tb where id > %s"}, select_params=(1,), order_by=['-nid']) - raw
# 执行原生SQL
models.UserInfo.objects.raw('select * from userinfo') # 如果SQL是其他表时,必须将名字设置为当前UserInfo对象的主键列名
models.UserInfo.objects.raw('select id as nid from 其他表') # 为原生SQL设置参数
models.UserInfo.objects.raw('select id as nid from userinfo where nid>%s', params=[12,]) name_map = {'first': 'first_name', 'last': 'last_name', 'bd': 'birth_date', 'pk': 'id'}
Person.objects.raw('SELECT * FROM some_other_table', translations=name_map) - 原生SQL from django.db import connection, connections
cursor = connection.cursor() # cursor = connections['default'].cursor()
cursor.execute("""SELECT * from auth_user where id = %s""", [1])
row = cursor.fetchone() # fetchall()/fetchmany(..)
PS: 选择数据库
queryset = models.Course.objects.using('default').all() 4. redis
- 是否可以持久化?AOF、RDB
- 单进程、单线程
- 5大数据类型
- 字典操作:
- scan_iter 5. 跨域
- JSONP
- CORS 6. Http协议 & django 生命周期 & wsgi & FBV、CBV 7. 中间件 8. restful 规范 9. 支付
- rsa
- 商户私钥+支付宝公钥
- 精度
-宕机 10. 原生Ajax
- XMLHttpRequest 今日内容:
- redis
- 列表
- 微信消息推送
- 支付相关表结构 内容详细:
- redis
- 左右操作
- 阻塞
- 通过yield创建一个生成器完成一点一点获取(通过字典操作的源码来的灵感) def list_iter(key,count=100):
index = 0
while True:
data_list = conn.lrange('k1', index, index+count-1)
if not data_list:
return
index += count for item in data_list:
yield item PS:
队列:先进先出
栈:后进先出 - 事务+一次发送多个命令:
conn = redis.Redis(host='47.94.172.250',port=6379,password='Luffy!4321') pipe = conn.pipeline(transaction=True)
pipe.multi() pipe.set('k2','')
pipe.hset('k3','n1',666)
pipe.lpush('k4','laonanhai') pipe.execute() - 微信消息推送
- 公众号
- 已认证公众号
- 服务号
- 已认证服务号
- 企业号 基于:微信认证服务号 主动推送微信消息。
前提:关注服务号
环境:沙箱环境 总结: 1. 注册账号
appID:wx89085e915d351cae
appsecret:64f87abfc664f1d4f11d0ac98b24c42d 网页授权获取用户基本信息:47.98.134.86 或 域名 2. 关注公众号(已认证的服务号) 3. 生成二维码,用户扫描;
将用户信息发送给微信,微信再将数据发送给设置redirect_uri地址(md5值) 4. 回调地址:47.98.134.86/callback/
- 授权
- 用户md5
- 获取wx_id
在数据库中更新设置:wx_id
5. 发送消息(模板消息)
- wx_id
- access_token(2小时有效期) - 支付相关:
1. 加入购物车,保存到redis
理由:
a. 临时状态
b. 修改购物信息 结构:
redis->{
shopping_car:{
用户ID:{
课程1:{
title:'金融量化分析入门',
img:'/xx/xx/xx.png',
policy:{
10: {'name':'有效期1个月','price':599},
11: {'name':'有效期3个月','price':1599},
13: {'name':'有效期6个月','price':2599},
},
default_policy:12
},
课程2:{
title:'金融量化分析入门',
img:'/xx/xx/xx.png',
policy:{
10: {'name':'有效期1个月','price':599},
11: {'name':'有效期3个月','price':1599},
13: {'name':'有效期6个月','price':2599},
},
default_policy:10
}
},
用户ID:{...},
}
} POST请求:购物车中添加一条数据
请求体:
{
courseid:1,
policy_id:10
}
后台:
检验当前课程是否有此价格策略,合法:将数据构造字典,再添加到redis GET请求:查看自己购物车中的所有数据
获取当前登录用户ID,根据用户ID去redis的购物车中获取数据。 DELETE请求:删除购物车中的数据
请求体:
{
course_ids:[1,2]
} PUT/PATCH请求:更新价格策略
请求体:
{
courseid:1,
policy_id:13
}
注意:不要写vue、不要写vue、不要写vue 2. 结算中心 3. 去支付 总结:
1. redis列表操作
- 前后都可以
- 等 hang住
- yield
- pipeline
2. 微信消息推送
- 已认证服务号
- 模板消息
- 生成二维码 3. 路飞购物车
- 为什么使用redis?
- 字典是如何构造? 作业:
1. django orm操作
2. 购物车
- django-redis组件

11.14 redis的更多相关文章

  1. centos7.6编译安装php7.2.11及redis/memcached/rabbitmq/openssl/curl等常见扩展

    centos7.6编译安装php7..11及redis/memcached/rabbitmq/openssl/curl等常见扩展 获取Php的编译参数方法: [root@eus-api-cms-bac ...

  2. JavaSE_ API常用对象 总目录(11~14)

    JavaSE学习总结第11天_开发工具 & API常用对象111.01 常见开发工具介绍11.02 Eclipse和MyEclipse的概述11.03 Eclipse的下载安装及卸载11.04 ...

  3. 14. Redis配置统计字典

    14. Redis配置统计字典14.1 info系统状态说明14.1.1 命令说明14.1.2 详细说明14.2 standalone配置说明和分析14.2.1 总体配置14.2.2 最大内存及策略1 ...

  4. Intel Artificial Intelligence Conference(2018.11.14)

    时间:2018.11.14地点:北京国贸大酒店

  5. 第26次Scrum会议(11/14)【欢迎来怼】

    一.小组信息 队名:欢迎来怼小组成员队长:田继平成员:李圆圆,葛美义,王伟东,姜珊,邵朔,阚博文 小组照片 二.开会信息 时间:2017/11/14 11:35~11:57,总计22min.地点:东北 ...

  6. Notes of Daily Scrum Meeting(11.14)

    Notes of Daily Scrum Meeting(11.14) 今天是项目第三周的周五,按原计划这时我们的项目应该已经要进入尾声进行组装调试了,但由于之前放假还有队员们的 效率比较低的原因,我 ...

  7. C++11/14笔记

    目录 语言层面 模板表达式中的空格 nullptr和std::nullptr_t 自动推导类型----auto 一致性初始化----Uniform Initialization 初始化列表(initi ...

  8. 基数排序的可复用实现(C++11/14/17/20)

    基数排序,是对整数类型的一种排序方法,有MSD (most significant digit)和LSD (least significant digit)两种.MSD将每个数按照高位分为若干个桶(按 ...

  9. 从阿里、腾讯的面试真题中总结了这11个Redis高频面试题

    前言 现在大家的工作生活基本已经是回归正轨了,最近也是迎来了跳槽面试季,有些人已经拿到了一两个offer了. 这段时间收集了阿里.腾讯.百度.京东.美团.字节跳动等公司的Java面试题,总结了Redi ...

随机推荐

  1. Spring(2)—IOC

    一.Spring IOC是什么 1.简述 Spring是一个开源框架 Spring为简化企业级应用开发而生,使用Spring可以使简单的JavaBean实现以前只有EJB才能实现的功能 Spring是 ...

  2. spring中的多线程aop方法拦截

    日常开发中,常用spring的aop机制来拦截方法,记点日志.执行结果.方法执行时间啥的,很是方便,比如下面这样:(以spring-boot项目为例) 一.先定义一个Aspect import org ...

  3. Mybatis : "less than" issue in Select annotations

    I am using java7, spring 3 and mybatis Pom.xml <org.mybatis-version>3.2.8</org.mybatis-vers ...

  4. MAC终端密钥登录自动输入密码

    升级MAC系统后,发现用于MAC终端ssh服务器的登录脚本无法正常执行了,表现为:需要手动输入密钥密码,于是重新整理一下,恢复正常,在此记录一下: #!/usr/bin/expect -fspawn ...

  5. SpringBoot注解大全(转)

    原文链接:[springBoot系列]--springBoot注解大全 一.注解(annotations)列表 @SpringBootApplication:包含了@ComponentScan.@Co ...

  6. centos找不到环境变量 -bash: ls: command not found

    #在系统中输入命令,报如下错误: [root@a1 work]# ll-bash: ls: command not found #昨时解决办法:export PATH=/usr/local/sbin: ...

  7. Scikit-learn 概述

    https://www.leiphone.com/news/201701/ZJMTak4Y8ch3Nwd0.html

  8. centos7.2重新安装yum

    [root@zf-test-web01-4 ~]# yum install rng-toolsLoaded plugins: fastestmirrorLoading mirror speeds fr ...

  9. adb shell am broadcast 手动发送广播及adb shell am/pm其他命令

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/zi_zhe/article/details/72229201 在命令行可用adb shell am ...

  10. css3 box-shadow 使用方法详解

    其用法为:  代码如下 复制代码 box-shadow: x-offset y-offset blur spread color inset; 上述六个参数含义依次是水平方向的偏移(正值向右偏移,负值 ...