redis实战(7):购物车

网址(Netscape)公司在20世纪90年代中期先在网络中使用了cookie.这些cookie 最终 变成了我们在上一节讨论的登录会话cookie。cookie 最初的意图在于为网络零件商(web retailer) 提供种购物乍,让用户可以收集他们想要购买的商品。在cookie之前.有过儿种不同的购物车 解决方案,但这些方案个都不太好用。

1 添加购物车

使用cookie实现购物车—也就是将购物车都存储到cookie里面的做法非常常见,这 种做法的一大优点是无须对数据库进行写人就可以实现购物车功能,而缺点则是程序需要重新解析和验证(validate)cookie.确保cookie的格式正确,并且包含的商品都是真正可购买的商品。 cookie购物车还有一个缺点:因为浏览器征次发送请求都会连cookie一起发送.所以如果购物车 cookie的体积比较大,那么请求发送和处理的速度可能会有所降低。
因为我们在前而已经使用Redis实现了会话cookie和记录用户最近浏览过的商品这两个特 性,所以我们决定将购物车的信息也存储到Redis里,并且使用与用户会话cookie相同的cookie ID来引用购物车。
购物车的定义非常简单:每个用户的购物车都是一个散列,这个散列存储了商品ID与商品订购数IL之间的映射。对商品数量进行验证的工作由Web应用程序负责,我们要做的则是在商品的购物数量出现变化时.对购物车进行更新:如果用户订购某件商品的数量大于0.那么程序会将这件商品 的ID以及用户订购该商品的数量添加到散列里面.如果用户购买的商品已经存在于散列里而.那么 新的汀购数最会覆盖已有的订购数量;相反地.如果用户订购某件商品的数量不大于0.那么程序将 从散列里面移除该条目。

def add_to_cart(conn,session,item,count){
	if count<0
		conn.hrem("cart:"+session,item)
	else
		conn.hset("cart:"+session,item,count)
}

2 清理会话

接着,我们需要对之前的会话清理函数进行更新,让他在清理旧会话的同时,将旧会话对应的用户购物车也一并删除

def clean_full_session(conn){
	while not QUIT
		size = conn.zcard("recent")
		if size <= LIMIT
			 time.sleep(1)
		 	 continue
		end_index=min(size-LIMIT,100)
		sessions = conn.zrange("recent:",0,end_index-1)
		
		session_keys=[]
		for sess in sessions:
			session_keys.append("viewwd:" + sess)
			session_keys.append("card::" + sess)
		conn.delete(*session_keys)
		conn.hdel("login:",*sessions)
		conn.zrem("recent:",*sessions)
}

我们现在讲会话和购物车都存储在redis,可以减少请求的体积,还使得我们可以根据用户浏览过的商品、用户放入购物车的商品以及最后购买的商品统计计算,为系统提供“查看该商品的用户中,有X%人购买了”“购买该商品的也购买了xxx商品”,最终提升网站的销售业绩。

<span style="font-size:18px;">   本课程全程使用目前比较流行的开发工具idea进行开发,涉及到目前互联网项目中最常用的高并发解决方案技术, 如  dubbo,redis,solr,freemarker,activeMQ,springBoot框架,微信支付,nginx负载均衡,电商活动秒杀,springSecurity安全框架,FastDFS分布式文件服务器,还会涉及到代码生成器,   前台的技术有angularJS和BootStrap框架,此课程内容丰富实战性强,如果你还是传统项目的开发人员,那你学完本课程会有很大的收获,让你的薪资上涨,5K以上,让你完全感受到了互联网思维带来的高并发解决方案的思路,如果你是开发的小白,建议你学完Spring,SpringMVC,MyBatis框架后再来学习本门课程,学完以后会让你完全体验到企业级开发的流程.</span><br /> <br /> <br /> <span style="font-size:18px;">在职开发人员学完后会让你的薪资更高,让你更了解互联网是如何解决高并发</span><br /> <span style="font-size:18px;"> </span><br /> <span style="font-size:18px;">学完SSM框架的同学就可以学习,能让你切身感受到企业级开发环境</span><br /> <br /> <br /> <span style="font-size:18px;">目标1:说出考拉易购购物车的实现思路</span><br /> <span style="font-size:18px;">目标2:运用Cookie存储购物车</span><br /> <span style="font-size:18px;">目标3:编写购物车前端代码</span><br /> <span style="font-size:18px;">目标4:运用Redis存储购物车</span><br /> <span style="font-size:18px;"></span>
相关推荐
<p> <span style="font-size:18px;"><img src="https://img-bss.csdn.net/202002191104111745.jpg" alt="" /><br /> </span> </p> <p> <span style="font-size:18px;">【课程介绍】</span> </p> <span style="font-size:18px;">     课程目标:</span><br /> <br /> <span style="font-size:18px;">1.实现未登录状态的购物车</span><br /> <br /> <span style="font-size:18px;">2.实现登陆状态下的购物车</span><br /> <br /> <br /> <span style="font-size:18px;">需求描述:</span><br /> <br /> <span style="font-size:18px;">- 用户可以在登录状态下将商品添加到购物车</span><br /> <span style="font-size:18px;">  - 放入数据库</span><br /> <span style="font-size:18px;">  - mongodb</span><br /> <span style="font-size:18px;">  - 放入redis(采用)</span><br /> <span style="font-size:18px;">- 用户可以在未登录状态下将商品添加到购物车</span><br /> <span style="font-size:18px;">  - 放入localstorage</span><br /> <span style="font-size:18px;">  - cookie</span><br /> <span style="font-size:18px;">  - webSQL</span><br /> <span style="font-size:18px;">- 用户可以使用购物车一起结算下单</span><br /> <span style="font-size:18px;">- 用户可以查询自己的购物车</span><br /> <span style="font-size:18px;">- 用户可以在购物车中修改购买商品的数量。</span><br /> <span style="font-size:18px;">- 用户可以在购物车中删除商品。</span><br /> <span style="font-size:18px;">- 在购物车中展示商品优惠信息</span><br /> <span style="font-size:18px;">- 提示购物车商品价格变化</span><br /> <span style="font-size:18px;"></span>
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页