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. 出现明明SQL语句没问题,但是却无法通过代码查询到结果的问题。

    问题:SQL语句查询不到记录,导致空指针异常 SQL语句: select * from mixinfo where infotype='网站简介' 代码: publicList<HashMap& ...

  2. Shader、Draw Call和渲染管线(Rendering Pipeline)

    翻阅了很多资料,也做了不少笔记,决定还是对渲染进行一个总结,以巩固所学的东西. <Real-Time Rendering, Third Edition>   (PDF的配图链接)将一个渲染 ...

  3. [PHP] 多表外连接性能测试及优化

    原文:https://blog.csdn.net/tang_huan_11/article/details/41925639 版权声明:本文为博主原创文章,转载请附上博文链接!

  4. Why validation set ?

    Let's assume that you are training a model whose performance depends on a set of hyperparameters. In ...

  5. OKDownload 下载框架 断点续传 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  6. Mac PD 虚拟机 鼠标双击 输入 "c" 解决

    Mac PD 虚拟机 鼠标双击 输入 "c" 解决 特么的, 是屏幕取词软件引起的.. 关闭就好了.

  7. intellj idea 跑覆盖率

  8. Python之练习数学运用代码

    1.对数函数 import math import matplotlib.pyplot as plt import numpy as np if __name__ == '__main__': x = ...

  9. VMware下centOS yum报错cannot find a valid baseurl or repo:base 解决方法

    *无法联网的明显表现会有: 1.yum install出现 Error: cannot find a valid baseurl or repo:base 2.ping host会提示unknown ...

  10. 通过一个小Trick实现shader的像素识别/统计操作

    2018/12/14日补充:后来发现compute shader里用AppendStructuredBuffer可以解决这类问题,请看这里:https://www.cnblogs.com/hont/p ...