面试:redis
购物车,为订单做铺垫。。
2.
把购物车放到redis中
电商第十一天:
购物车:
状态:
第一种难的:
登录:
mysql — redis
mysql 与 redis 的数据是如何同步的?
CRUD
添加购物车:
查询购物车:
勾选购物车商品:
合并购物车功能!
未登录:
cookie
CRUD
建议面试:
登录:redis
rdb,aof ;rdb默认
单吊::; **redis-cluster:集群**
未登录:redis
**如果cookie禁用怎么办?
如果cookie 禁用!各大电商网站例如京东都会有影响!登录都会失败!
cookie 有大小限制!**
创建项目gmall-cart-web,gmall-cart-service
添加购物车功能开发:
bean,mapper,service,service.impl,controller
功能分析:
在商品详情页中点击添加购物车 {skuId,skuNum,userId}
mysql - cartInfo
购物车中的数据:以什么结构存储到redis 中? hash 来存储
key:
一种:cart:userId:info 类似这种形式起名
二种:user:userId:cart
field: skuId
value: 单独一个商品数据
jedis.hset(key,field,value);
jedis.hget(key,field);
/*
1. 根据skuId ,userId查询购物车中是否有该商品,如果有则数量相加
select * from cartInfo where skuId = ? and userId=?
2. 如果没有,则直接添加到购物车
3. 将购物车的数据同步到redis
*/
测试:
查询购物车列表:
电商第十一天:
购物车:
状态:
课上讲:
登录:
mysql — redis
mysql 与 redis 的数据是如何同步的?
CRUD
添加购物车:
查询购物车:
勾选购物车商品:
合并购物车功能!
未登录:
cookie
CRUD
建议面试:
登录:redis
rdb,aof ;rdb默认
redis-cluster:集群
key = user:userId:cart
field = skuId
value = cartInfo字符串
jedis.hset(key,field,value);
未登录:redis
String uuId = UUID.random().toString();
第一种方案:存在local storage
第二种方案:拼接到url 后面 xxxx?uuId=uuId
第三种方案:cookie 中
Cookie cookie = new Cookie("uuId",uuId);
String uuId = cookie.getCookieName("uuId");
key = user:uuId:cart
field = skuId
value = cartInfo字符串
jedis.hset(key,field,value);
如果cookie禁用怎么办? 如果cookie 禁用!各大电商网站例如京东都会有影响!登录都会失败!
cookie 有大小限制!
创建项目gmall-cart-web,gmall-cart-service
添加购物车功能开发:
bean,mapper,service,service.impl,controller
功能分析:
在商品详情页中点击添加购物车 {skuId,skuNum,userId}
mysql - cartInfo
购物车中的数据:以什么结构存储到redis 中? hash 来存储
key:
一种:cart:userId:info 类似这种形式起名
二种:user:userId:cart
field: skuId
value: 单独一个商品数据
jedis.hset(key,field,value);
jedis.hget(key,field);
/*
1. 根据skuId ,userId查询购物车中是否有该商品,如果有则数量相加
select * from cartInfo where skuId = ? and userId=?
2. 如果没有,则直接添加到购物车
3. 将购物车的数据同步到redis
*/
测试:
查询购物车列表:
、
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
功能—添加入购物车
商品详情页面,item.html.
1 功能解析:
1、 根据skuId查询出商品详情skuInfo
2、 把skuInfo信息对应保存到购物车[购物车的实体类]
3、 返回成功页面
2 设计购物车的数据结构
下单才会真正锁定价格!
Redis中的结构
购物车数据存放利用Hash结构存储:
String ,List,Hash,Set,ZSet
Set(key,value)
Demo:购物车中有两件商品,如果使用String 类型,要想修改第一个商品,则必须将所有的value全部进行反序列化。设计到Io操作,性能降低。
Hset(key,field,value): field = skuId
要想修改第一个商品,hget(key,001,cartInfoJson); 需要修改哪件商品,则反序列化哪一个商品即可!
hset(user:[userId]:cart,skuId,CartInfoJson)
key: “user:[userId]:cart”
field: [skuId]
value: CartInfo (Json)
整个购物车还是单个
《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《
商品详情::::
《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《
《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《
《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《