Code -> GigHub
https://github.com/liufengji/redis_seckill.git
1、概念
http://www.lua.org/download.html
Lua是一个小巧的脚本语言,用标准C语言编写并以源代码形式开放,因此Lua脚本可以很容易的被C/C++ 代码调用,也可以反过来调用C/C++的函数,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能,Lua并没有提供强大的库,一个完整的Lua解释器不过200k,所以Lua不适合作为开发独立应用程序的语言,而是作为嵌入式脚本语言。
Lua 是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组于 1993 年开发的,该小组成员有:Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo。
很多应用程序、游戏使用LUA作为自己的嵌入式脚本语言,以此来实现可配置性、可扩展性。这其中包括魔兽争霸地图、魔兽世界、博德之门、愤怒的小鸟等众多游戏插件或外挂。
2、LUA脚本在Redis中的优势
seckill.lua
(1)将复杂的或者多步的redis操作,写为一个脚本,一次提交给redis执行,减少反复连接redis的次数。提升性能。
(2)LUA脚本是类似redis事务,有一定的原子性,不会被其他命令插队,可以完成一些redis事务性的操作。
但是注意redis的lua脚本功能,只有在2.6以上的版本才可以使用。
(3)利用lua脚本淘汰用户,解决超卖问题。
(4)redis 2.6版本以后,通过lua脚本解决争抢问题,实际上是redis 利用其单线程的特性,用任务队列的方式解决多任务并发问题。
3、利用lua脚本淘汰用户,解决超卖问题。
redis 2.6版本以后,通过lua脚本解决争抢问题,实际上是redis 利用其单线程的特性,用任务队列的方式解决多任务并发问题
Nginx 支持 Lua ,Redis支持Lua,面对高并发可以选择Nginx+Lua+redis,替代掉Tomcat+mysql
电商 最热访问页面,很多都是使用Nginx+Lua+redis