redis底层是用c语言写的。执行的redis命令底层是调用的对应的lua脚本。下面是跟着james老师通过做自定义lua脚本,实现限流的功能。
脚本实现的功能是:在3秒内不超过2个连接。
1、lua编译器安装
到官网下载lua的tar.gz的源码包 wget http://www.lua.org/ftp/lua-5.3.5.tar.gz .
tar -zxvf lua-5.3.0.tar.gz 进入解压的目录: cd lua-5.3.5
make linux
make install 如果报错,说找不到readline/readline.h, 可以通过yum命令安装
yum -y install libtermcap-devel ncurses-devel libevent-devel readline-devel
安装完以后再make linux / make install 最后,直接输入 lua命令即可进入lua的控制台
2、lua脚本编写
我是在redis安装目录 /usr/local/soft/redis-5.0.5 创建ipcount.lua
local key = KEYS[1]
local limit = tonumber