Redis 6 学习笔记 4 —— 通过秒杀案例,学习并发相关和apache bench的使用,记录遇到的问题

如果你不相信努力和时光,那么成果就会是第一个选择辜负你的。不要去否定你自己的过去,也不要用你的过去牵扯你现在的努力和对未来的展望。不是因为拥有希望你才去努力,而是去努力了,你才有可能看到希望的光芒。Redis 6 学习笔记 4 —— 通过秒杀案例,学习并发相关和apache bench的使用,记录遇到的问题,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

背景

这是某硅谷的redis案例,主要问题是解决计数器和人员记录的事务操作

Redis 6 学习笔记 4 —— 通过秒杀案例,学习并发相关和apache bench的使用,记录遇到的问题

按照某硅谷的视频敲完之后出现这样乱码加报错的问题

Redis 6 学习笔记 4 —— 通过秒杀案例,学习并发相关和apache bench的使用,记录遇到的问题

 乱码的问题要去tomcat根目录的conf文件夹下修改logging.properties,把下面两个encoding参数都改成GBK就行。

Redis 6 学习笔记 4 —— 通过秒杀案例,学习并发相关和apache bench的使用,记录遇到的问题

Redis 6 学习笔记 4 —— 通过秒杀案例,学习并发相关和apache bench的使用,记录遇到的问题

其实错误也很明显(ClassNotFoundException),就是有包没有加进项目的lib中。好在idea添加包也很方便

Redis 6 学习笔记 4 —— 通过秒杀案例,学习并发相关和apache bench的使用,记录遇到的问题

 

又报了如下错误

com.atguigu.SecKillServlet cannot be cast to jakarta.servlet.Servlet

 查资料发现是因为我刚好用的是tomcat10的版本,编写servlet的时候要导入jakarta.Servlet.*的包,而不是javax.servlet。

这里我懒得改命名了,直接用原项目的tomcat名字,所以后面显示Tomcat 8.5.572。。

Redis 6 学习笔记 4 —— 通过秒杀案例,学习并发相关和apache bench的使用,记录遇到的问题

没有这个提示,也就是找不到tomcat的包的朋友们注意要进行下面的操作。

Redis 6 学习笔记 4 —— 通过秒杀案例,学习并发相关和apache bench的使用,记录遇到的问题

设计并发,使用Apache Bench

Redis 6 学习笔记 4 —— 通过秒杀案例,学习并发相关和apache bench的使用,记录遇到的问题

Apache VS17 binaries and modules download (apachelounge.com)

直接下载解压就能用了。Apache Bench的参数意义与使用

Redis 6 学习笔记 4 —— 通过秒杀案例,学习并发相关和apache bench的使用,记录遇到的问题

 

Redis 6 学习笔记 4 —— 通过秒杀案例,学习并发相关和apache bench的使用,记录遇到的问题

 

本来设置商品数量是10个的,并发情况下一下子就突破了。

超卖和超时问题

超时问题是redis报错connect time out,改成使用连接池就行。

超卖问题的解决跟上锁有关,使用redis的乐观锁机制(watch监视库存量、multi获取事务类组合秒杀过程、exec执行)可以解决。

库存遗留问题

这个是由乐观锁引起的。乐观锁的机制是不上锁,谁先修改就以谁为准,所以会有修改失败的情况。这时候就会有库存的遗留问题,因为有可能会秒杀失败但不是因为库存不够引起的。

解决方案:Lua脚本

将复杂的或者多步的redis操作,写为一个脚本,一次提交给redis执行,减少反复连接redis的次数。提升性能。

LUA脚本是类似redis事务,有一定的原子性,不会被其他命令插队,可以完成一些redis事务性的操作。

但是注意redis的lua脚本功能,只有在Redis 2.6以上的版本才可以使用。

利用lua脚本淘汰用户可以解决超卖问题。redis 2.6版本以后,通过lua脚本解决争抢问题,实际上是redis 利用其单线程的特性,用任务队列的方式解决多任务并发问题

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/199810.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!