Redis+LUA技术

1.使用Redis+Lua提升性能

原先代码:

Redis+LUA技术_第1张图片

 优化点:

Redis+LUA技术_第2张图片

Redis为什么要使用LUA

Redis+LUA技术_第3张图片

Redis+LUA技术_第4张图片

入门例子:

 以上脚本说明:

1. eval :为redis关键字

2.双引号的内容代表 lua脚本

3. 2代表 numbers参数的个数,即有多少个key

4.key1 和 key2 代表 KEYS[1] , KEYS[2] 的入参

5.agan1 ,agan2 是 ARGV[1], ARGV[2]的入参

性能优化:

将上述代码优化成lua脚本:

原代码:

Redis+LUA技术_第5张图片

lua 脚本:

Redis+LUA技术_第6张图片

 nil :特对于表示Object-C的除Class类型外的对象为NULL

~= :关系运算符号:不等于

Redis+LUA技术_第7张图片

将上述的lua脚本保存到 compareAndSet.lua中

执行lua脚本:

user:101 是redis要操作的key,在lua脚本中用KEYS[1]就能拿到

 " , " 逗号后面的agan101是lua的参数,lua脚本中用ARGV[1]就能拿到

注意:  " , " 逗号 两边的空格不能省略,否则会报错。

--eval:告诉redis-cli 要执行后面的lua脚本,compareAndSet.lua :脚本的目录文章

在springboot中执行lua

1.步骤1:编写lua文件,并存储于resources/lua目录下

Redis+LUA技术_第8张图片

目录:

Redis+LUA技术_第9张图片

 2.步骤2 :创建一个lua对象

Redis+LUA技术_第10张图片

Redis+LUA技术_第11张图片创建DefaultRedisScript对象,用于存放lua脚本,把resources/lua/compareAndSet.lua脚本内容存放在DefaultRedisScript对象中

Redis+LUA技术_第12张图片

 3.步骤3:springboot执行lua脚本:

 Redis+LUA技术_第13张图片

Redis+LUA技术_第14张图片Redis+LUA技术_第15张图片

 放到service层也可以

2.Redis+Lua 实现黑客防刷攻击

 

lua脚本:

Redis+LUA技术_第16张图片

 将lua脚本存到resources目录下:

创建lua对象:同上

 springboot执行lua脚本:

Redis+LUA技术_第17张图片

光限制IP的请求数还不够,因为黑客一般手里有上百万台肉鸡的,IP地址大大的有,所以光限制IP还不够【但是能防住一般的攻击】,还需要其他的限制

你可能感兴趣的:(redis,lua,redis)