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. linux 下令chmod 755的意思

    linux 命令chmod 755的意思 chmod是Linux下设置文件权限的命令,后面的数字表示不同用户或用户组的权限. 一般是三个数字:第一个数字表示文件所有者的权限第二个数字表示与文件所有者同 ...

  2. HIVE开发总结

    基本数据类型 查看所有函数 搜索函数 搜索表 查看函数使用方法 关键字补全 显示表头 SET环境变量 查看建表语句.数据文件置 执行外部命令 NVL CONCAT IF CASE TRIM SUBST ...

  3. Jetpack 架构组件 Paging 分页加载 MD

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

  4. [Python设计模式] 第28章 男人和女人——访问者模式

    github地址:https://github.com/cheesezh/python_design_patterns 题目 用程序模拟以下不同情况: 男人成功时,背后多半有一个伟大的女人: 女人成功 ...

  5. angularjs自定义filter

    angular.Module API Overview Methods info([info]); provider(name, providerType); factory(name, provid ...

  6. C语言结构体变量私有化

    操作系统 : CentOS7.3.1611_x64 gcc版本 :4.8.5 问题描述 C语言结构体定义中的变量默认是公有(Public)属性,如果实现成员变量的私有(Private)化? 解决方案 ...

  7. lua 源码分析之线程对象lua_State

    lua_State 中放的是 lua 虚拟机中的环境表.注册表.运行堆栈.虚拟机的上下文等数据. 从一个主线程(特指 lua 虚拟机中的线程,即 coroutine)中创建出来的新的 lua_Stat ...

  8. Springboot2.x 集成jsp

    1.添加pom依赖 <!--引入springboot 内嵌tomcat对jsp的解析包--> <dependency> <groupId>org.apache.to ...

  9. Cocos 编译android-studio

    3.15.1 之前: http://www.jianshu.com/p/ac2bac4734b8 http://www.jianshu.com/p/3d0cc85460d1 在工程项目下 运行 coc ...

  10. yaf项目将500错误打印到页面上

    一般在yaf项目调试的时候,如果代码有错误,页面只会响应500错误,但看不到哪里报了什么错误,通过开启yaf的一个配置可以将错误信息显示在页面上. 打开项目的index.php入口文件,在开头加入如下 ...