怎么在SpringBoot中利用RedisTemplate执行Lua脚本

  介绍

本篇文章为大家展示了怎么在SpringBoot中利用RedisTemplate执行Lua脚本,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

<强> Lua脚本

复述中使用Lua脚本,我们需要注意的是,从复述2.6.0后才支持Lua脚本的执行。

<强>使用Lua脚本的好处:

原子操作:Lua脚本是作为一个整体执行的,所以中间不会被其他命令插入。
减少网络开销:可以将多个请求通过脚本的形式一次发送,减少网络时延。
复用性:Lua脚本可以常驻在复述,内存中,所以在使用的时候,可以直接拿来复用,也减少了代码量。

<强> 1。RedisScript

首先你得引入spring-boot-starter-data-redis依赖,其次把lua脚本放在资源目录下。

@Bean  public  DefaultRedisScript, defaultRedisScript (), {,   DefaultRedisScript

在春天Boot2.0的时候,上述配置没有问题,但在春天

Boot1.5测试会出错,需要将List.class改为具体的返回类型(如Long.class)。

RedisScript的getSha1()方法可以获取脚本摘要。

<强> 2。调用脚本

/* *, *,列表设置lua的KEYS  */, List, keyList =, new  ArrayList (),,   keyList.add (“count");, keyList.add (“rate.limiting: 127.0.0.1");,/* *, *

用Mpa设置Lua的ARGV [1]

*/, Map<字符串,Object>, argvMap =, new  HashMap<字符串,,      Object> (), argvMap.put (“expire",, 10000);, argvMap.put (“times",, 10),,/* *, *

调用脚本并执行

, */, List  result =, redisTemplate1.execute (redisScript, keyList,, argvMap),,      System.out.println(结果);

若是出现序列化问题,可以指定序列化方式。

public  & lt; T>, T 执行(RedisScript,钥匙,对象…,args), {, return    scriptExecutor.execute (argsSerializer,脚本,还以为,resultSerializer,钥匙,args);,}

<强> 3。Lua脚本

——获取关键当地key1=键[1][2]key2=键——

获取ARGV[1],这里对应到应用端是一个List。——注意,这里接收到是的字符串,所以需要用csjon库解码成表类型当地

receive_arg_json =, cjson.decode (ARGV[1]),——获取ARGV内的参数并打印,local  expire =,   receive_arg_json.expire  local  times =receive_arg_json。* springboot是什么

springboot一种全新的编程规范,其设计目的是用来简化新弹簧应用的初始搭建以及开发过程,springboot也是一个服务于框架的框架,服务范围是简化配置文件。

怎么在SpringBoot中利用RedisTemplate执行Lua脚本