案例

Redis 第9章 案例

2019-06-29  本文已影响5人  尚硅谷教育

第9章 案例

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


    image.png

    2.2 数据库连接池:


    image.png
    image.png
    2.3. 使用ab进行压力测试
    image.png

    参数含义:
    -c:模拟多少个客户端
    -n:测试几次
    -T:内容类型
    -P:参数文件(注意参数文件的参数要以&符号结尾,注意携带绝对路径)

postarg文件:


image.png

2.4 超卖问题


image.png
image.png
解决:使用乐观锁解决超卖!
image.png

2.5 秒杀富余问题
2.5.1 压测脚本


image.png
2.5.2 如何解决
使用lua脚本解决!
2.5.3 Lua
Lua 是一个小巧的脚本语言,Lua脚本可以很容易的被C/C++ 代码调用,也可以反过来调用C/C++的函数,Lua并没有提供强大的库,一个完整的Lua解释器不过200k,所以Lua不适合作为开发独立应用程序的语言,而是作为嵌入式脚本语言
image.png

很多应用程序、游戏使用LUA作为自己的嵌入式脚本语言,以此来实现可配置性、可扩展性。这其中包括魔兽争霸地图、魔兽世界、博德之门、愤怒的小鸟等众多游戏插件或外挂。

LUA脚本在Redis中的优势:
将复杂的或者多步的redis操作,写为一个脚本,一次提交给redis执行,减少反复连接redis的次数。提升性能。
LUA脚本是类似redis事务,有一定的原子性,不会被其他命令插队,可以完成一些redis事务性的操作。
但是注意redis的lua脚本功能,只有在2.6以上的版本才可以使用。


image.png

本教程由尚硅谷教育大数据研究院出品,如需转载请注明来源,欢迎大家关注尚硅谷公众号(atguigu)了解更多。

上一篇 下一篇

猜你喜欢

热点阅读