redis中使用lua脚本的好处

什么是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脚本过大,则不太建议使用。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Lua脚本 Redis的单一指令都是原子的,可以有效保证执行结果要么成功要么失败;当用户要执行多条数据时,一方面每...
    李小磊_0867阅读 8,897评论 3 5
  • 1. lua用法简述 Lua语言是在1993年由巴西一个大学研究小组发明,其设计目标是作为嵌入式程序移植到其他应用...
    handsomemao666阅读 4,669评论 0 0
  • [TOC] 相关命令 EVAL SCRIPT_LOAD EVALSHA(执行之前要求执行过EVAL或者SCRIPT...
    志华_C阅读 11,025评论 0 4
  • 预测流程: 1、立太极:明确预测问题,确立范围界限(天人合一); 2、分阴阳:分清体用(单方,自身/他人为体,事物...
    自心经阅读 3,251评论 2 2
  • 饱醉豚最近成为了众矢之的,乱箭所射的似乎不是他的文字,而是简书的签约作者。 而从根本上说是这个签约作者背后的经营和...
    琢爱舟阅读 4,662评论 5 9

友情链接更多精彩内容