欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot通過(guò)RedisTemplate執(zhí)行Lua腳本的方法步驟

 更新時(shí)間:2020年02月10日 09:59:25   投稿:mrr  
這篇文章主要介紹了SpringBoot通過(guò)RedisTemplate執(zhí)行Lua腳本的方法步驟,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

lua 腳本

Redis 中使用 lua 腳本,我們需要注意的是,從 Redis 2.6.0后才支持 lua 腳本的執(zhí)行。

使用 lua 腳本的好處:

原子操作:lua腳本是作為一個(gè)整體執(zhí)行的,所以中間不會(huì)被其他命令插入。
減少網(wǎng)絡(luò)開(kāi)銷:可以將多個(gè)請(qǐng)求通過(guò)腳本的形式一次發(fā)送,減少網(wǎng)絡(luò)時(shí)延。
復(fù)用性:lua腳本可以常駐在redis內(nèi)存中,所以在使用的時(shí)候,可以直接拿來(lái)復(fù)用,也減少了代碼量。

1.RedisScript

首先你得引入spring-boot-starter-data-redis依賴,其次把lua腳本放在resources目錄下。

@Bean public DefaultRedisScript<List> defaultRedisScript() { 
DefaultRedisScript<List> defaultRedisScript = new DefaultRedisScript<>(); 
defaultRedisScript.setResultType(List.class); 
defaultRedisScript.setScriptSource(new ResourceScriptSource(new 
ClassPathResource("redis/demo.lua"))); return defaultRedisScript; } 

在Spring Boot2.0的時(shí)候,上述配置沒(méi)有問(wèn)題,但在Spring

Boot1.5測(cè)試會(huì)出錯(cuò),需要將List.class改為具體的返回類型(如Long.class)。

RedisScript的getSha1()方法可以獲取腳本摘要。

2.調(diào)用腳本

/** * List設(shè)置lua的KEYS */ List<String> keyList = new ArrayList(); 
keyList.add("count"); keyList.add("rate.limiting:127.0.0.1"); /** * 

用Mpa設(shè)置Lua的ARGV[1]

*/ Map<String, Object> argvMap = new HashMap<String, 

Object>(); argvMap.put("expire", 10000); argvMap.put("times", 10); /** * 

調(diào)用腳本并執(zhí)行

 */ List result = redisTemplate1.execute(redisScript, keyList, argvMap); 

System.out.println(result); 

若是出現(xiàn)序列化問(wèn)題,可以指定序列化方式。

public <T> T execute(RedisScript<T> script, RedisSerializer<?> argsSerializer, 
RedisSerializer<T> resultSerializer, List<K> keys, Object... args) { return 
scriptExecutor.execute(script, argsSerializer, resultSerializer, keys, args); } 

3.Lua腳本

--獲取KEY local key1 = KEYS[1] local key2 = KEYS[2] --

獲取ARGV[1],這里對(duì)應(yīng)到應(yīng)用端是一個(gè)List<Map>. -- 注意,這里接收到是的字符串,所以需要用csjon庫(kù)解碼成table類型 local

receive_arg_json = cjson.decode(ARGV[1]) --獲取ARGV內(nèi)的參數(shù)并打印 local expire = 
receive_arg_json.expire local times = receive_arg_json.times 

總結(jié)

以上所述是小編給大家介紹的SpringBoot通過(guò)RedisTemplate執(zhí)行Lua腳本的方法步驟,希望對(duì)大家有所幫助!

相關(guān)文章

  • 淺談SpringMVC的執(zhí)行流程

    淺談SpringMVC的執(zhí)行流程

    下面小編就為大家?guī)?lái)一篇淺談SpringMVC的執(zhí)行流程。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • RocketMQ存儲(chǔ)文件的實(shí)現(xiàn)

    RocketMQ存儲(chǔ)文件的實(shí)現(xiàn)

    這篇文章主要介紹了RocketMQ存儲(chǔ)文件的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • RocketMQ設(shè)計(jì)之故障規(guī)避機(jī)制

    RocketMQ設(shè)計(jì)之故障規(guī)避機(jī)制

    這篇文章主要介紹了RocketMQ設(shè)計(jì)之故障規(guī)避機(jī)制,故障規(guī)避機(jī)制就是用來(lái)解決當(dāng)Broker出現(xiàn)故障,Producer不能及時(shí)感知而導(dǎo)致消息發(fā)送失敗的問(wèn)題,下面詳細(xì)介紹需要的小伙伴可以參考一下
    2022-03-03
  • Java基礎(chǔ)之extends用法詳解及簡(jiǎn)單實(shí)例

    Java基礎(chǔ)之extends用法詳解及簡(jiǎn)單實(shí)例

    這篇文章主要介紹了 Java基礎(chǔ)之extends用法詳解及簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 詳解Java8新特性之interface中的static方法和default方法

    詳解Java8新特性之interface中的static方法和default方法

    這篇文章主要介紹了Java8新特性之interface中的static方法和default方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-08-08
  • Java基礎(chǔ)鞏固系列包裝類代碼實(shí)例

    Java基礎(chǔ)鞏固系列包裝類代碼實(shí)例

    這篇文章主要介紹了Java包裝類,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Java的接口調(diào)用時(shí)的權(quán)限驗(yàn)證功能的實(shí)現(xiàn)

    Java的接口調(diào)用時(shí)的權(quán)限驗(yàn)證功能的實(shí)現(xiàn)

    這篇文章主要介紹了Java的接口調(diào)用時(shí)的權(quán)限驗(yàn)證功能的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Java運(yùn)算符從見(jiàn)過(guò)到掌握上

    Java運(yùn)算符從見(jiàn)過(guò)到掌握上

    計(jì)算機(jī)的最基本用途之一就是執(zhí)行數(shù)學(xué)運(yùn)算,作為一門計(jì)算機(jī)語(yǔ)言,Java也提供了一套豐富的運(yùn)算符來(lái)操縱變量,本篇對(duì)大家的學(xué)習(xí)或工作具有一定的價(jià)值,需要的朋友可以參考下
    2021-09-09
  • SpringBoot沒(méi)有主清單屬性的解決方法

    SpringBoot沒(méi)有主清單屬性的解決方法

    在本篇文章里小編給大家整理的是關(guān)于解決SpringBoot沒(méi)有主清單屬性知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。
    2019-11-11
  • MyBatis開(kāi)發(fā)Dao層的兩種方式實(shí)現(xiàn)(原始Dao層開(kāi)發(fā))

    MyBatis開(kāi)發(fā)Dao層的兩種方式實(shí)現(xiàn)(原始Dao層開(kāi)發(fā))

    這篇文章主要介紹了MyBatis開(kāi)發(fā)Dao層的兩種方式實(shí)現(xiàn)(原始Dao層開(kāi)發(fā)),并對(duì)數(shù)據(jù)庫(kù)進(jìn)行增刪查改,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12

最新評(píng)論