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. 利用Vmware 创建Linux虚拟机的方法

    https://blog.csdn.net/qq_34929457/article/details/52663265 使用VMware新建一个Linux系统虚拟机 原创 2016年09月25日 17: ...

  2. centos7安装redis设置开机启动

    1. 首先下载redis源码,并使用tar进行解压缩 wget http://download.redis.io/releases/redis-4.0.8.tar.gztar xvzf redis-4 ...

  3. fastjson序列化乱序问题

    1.初始化为有序json对象 JSONObject jsonOrdered= new JSONObject(true); 2.将String对象转换过程中,不要调整顺序 JSONObject json ...

  4. jsp执行过程图解

    转自:https://blog.csdn.net/y277an/article/details/76561451 一.jsp执行过程图解 用户访问jsp页面时,jsp的处理过程如下图所示: 二.预处理 ...

  5. Windows两个网卡配置路由规则 同时访问内网和外网

    电脑上有两个网卡,一个有线一个无线,有线连局域网,无线连外网,虽然两个网都连着,但还是会出现访问不通的情况. 这就要求我们自己来配置路由规则,让内网的访问走内网的网卡,外网的访问走外网的网卡. 一.查 ...

  6. CMD 命令2

    cd  %~dp0 切换到当前脚本所有目录 批处理常用命令总结 - 批处理命令简介 目录 echo 打开回显或关闭请求回显功能,或显示消息.如果没有任何参数,echo 命令将显示当前回显设置. ech ...

  7. 爬虫对自己服务器 CPU,内存和网速的影响

    今天无事写一遍关于爬虫对计算机的影响,主要是给小白同学普及一下爬虫的基础知识. 在我们写爬虫的时候,首先会想到开多线程,如果使用的语言是Python,很不幸,因为Python存在  GIL,在任何时候 ...

  8. LeetCode 232:Implement Queue using Stacks

     Implement the following operations of a queue using stacks. push(x) -- Push element x to the back ...

  9. jQuery EasyUI 详解

    EasyUI 简介 easyui 是一种基于 jQuery 的用户界面插件集合. easyui 为创建现代化,互动,JavaScript 应用程序,提供必要的功能. 使用 easyui 你不需要写很多 ...

  10. windows安装centos7子系统

    Windows的Linux子系统(wsl ) 自从有了wsl后,基本上虚拟机都省了,对于离不开Windows的便捷,Linux对开发的友好的人来说,真是一大利器.可惜默认的系统没有centos,幸运的 ...