什么是lua?
Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
redis使用lua的好处
1.原子性。redis执行lua脚本的时候,会将它作为一个整体执行,要么全部执行成功,如果出现异常则执行结果不会更新到redis中,可以代替redis中的事务操作。
2.节省网络开销。通过脚本的方式执行多个命令,一次传输返回结果。redis的pipeline也同样有这样的优点,相比lua脚本中执行的多个命令,pipe中某个命令执行出现异常不会影响其他的命令的更新到redis中;但lua脚本使用更加灵活。
3.脚本的复用。如果每次请求都要传输脚本,存在一定的网络开销,通过 SCRIPT LOAD 命令进行Redis 将脚本缓存到服务器的操作,并且返回脚本内容的SHA1校验和,Evalsha 命令根据给定的 sha1 校验码,执行缓存在服务器中的脚本。
语法
redis eval命令语法 实例java中redis操作lua的实例
下面通过一个springboot通过redisTemaplate实例,使用lua脚本,redis执行lua脚本获取执行结果。
java代码lua脚本再resources资源目录下,lua脚本如下:
lua脚本通过脚本执行多个get命令,执行完毕后一次性将执行结果返回。但是耗时性,由于redis原子性的要求,导致同一时间只能执行一个命令,因此,单个lua不建议太大,导致系统被占用,从而引起其他服务无法正常进行。如果需要redis立即返回执行结果而lua脚本过大,则不太建议使用。
网友评论