1.使用Redis+Lua提升性能
原先代码:
优化点:
Redis为什么要使用LUA
入门例子:
以上脚本说明:
1. eval :为redis关键字
2.双引号的内容代表 lua脚本
3. 2代表 numbers参数的个数,即有多少个key
4.key1 和 key2 代表 KEYS[1] , KEYS[2] 的入参
5.agan1 ,agan2 是 ARGV[1], ARGV[2]的入参
性能优化:
将上述代码优化成lua脚本:
原代码:
lua 脚本:
nil :特对于表示Object-C的除Class类型外的对象为NULL
~= :关系运算符号:不等于
将上述的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目录下
目录:
2.步骤2 :创建一个lua对象
创建DefaultRedisScript对象,用于存放lua脚本,把resources/lua/compareAndSet.lua脚本内容存放在DefaultRedisScript对象中
3.步骤3:springboot执行lua脚本:
放到service层也可以
2.Redis+Lua 实现黑客防刷攻击
lua脚本:
将lua脚本存到resources目录下:
创建lua对象:同上
springboot执行lua脚本:
光限制IP的请求数还不够,因为黑客一般手里有上百万台肉鸡的,IP地址大大的有,所以光限制IP还不够【但是能防住一般的攻击】,还需要其他的限制