Redis应用案例
1、手机验证码
需求:
①输入手机号,点击发送后随机生成 6 位数字码,2 分钟有效
②输入验证码,点击验证,返回成功或失败
③每个手机号每天只能输入 3 次
2、秒杀
2.1 实现思路

2.2 数据库连接池
1 | public class JedisPoolUtil { |
2.3.使用 ab 进行压力测试
1 | ab -c 10 -n 100 -p /root/postarg -T application/x-www-form-urlencoded http://192.168.107.1:8080/seckill/doseckill |
参数含义:
-c:模拟多少个客户端
-n:测试几次
-T:内容类型
-P:参数文件(注意参数文件的参数要以&符号结尾,注意携带绝对路径)
postarg 文件:
1 | prodid=1001& |
2.4 超卖问题


解决:使用乐观锁解决超卖!

2.5 秒杀富余问题
2.5.1 压测脚本
1 | ab -c 200 -n 2000 -p /root/postarg -T application/x-www-form-urlencoded http://192.168.107.1:8080/seckill/doseckill |
2.5.2 使用 lua 脚本解决!
Lua 是一个小巧的脚本语言,Lua 脚本可以很容易的被 C/C++ 代码调用,也可以反过来调用 C/C++的函数,Lua 并没有提供强大的库,一个完整的 Lua 解释器不过 200k,所以 Lua 不适合作为开发独立应用程序的语言,而是作为嵌入式脚本语言

很多应用程序、游戏使用 LUA 作为自己的嵌入式脚本语言,以此来实现可配置性、可扩展性。这其中包括魔兽争霸地图、魔兽世界、博德之门、愤怒的小鸟等众多游戏插件或外挂。
LUA 脚本在 Redis 中的优势:
将复杂的或者多步的 redis 操作,写为一个脚本,一次提交给 redis 执行,减少反复连接 redis 的次数。提升性能。
LUA 脚本是类似 redis 事务,有一定的原子性,不会被其他命令插队,可以完成一些 redis 事务性的操作。但是注意 redis 的 lua 脚本功能,只有在 2.6 以上的版本才可以使用。

If you like this blog or find it useful for you, you are welcome to comment on it. You are also welcome to share this blog, so that more people can participate in it. If the images used in the blog infringe your copyright, please contact the author to delete them. Thank you !