真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

SpringBoot中怎么利用RedisTemplate執(zhí)行Lua腳本

SpringBoot中怎么利用redisTemplate執(zhí)行Lua腳本,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。

10年積累的成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站策劃后付款的網(wǎng)站建設(shè)流程,更有定西免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

lua 腳本

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

使用 lua 腳本的好處:

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

1.RedisScript

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

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

在Spring Boot2.0的時(shí)候,上述配置沒有問題,但在Spring

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

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

2.調(diào)用腳本

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

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

*/ Map argvMap = new HashMap(); argvMap.put("expire", 10000); argvMap.put("times", 10); /** *

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

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

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

public T execute(RedisScript script, RedisSerializer argsSerializer, RedisSerializer resultSerializer, List 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. -- 注意,這里接收到是的字符串,所以需要用csjon庫解碼成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

關(guān)于SpringBoot中怎么利用RedisTemplate執(zhí)行Lua腳本問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。


本文標(biāo)題:SpringBoot中怎么利用RedisTemplate執(zhí)行Lua腳本
當(dāng)前地址:http://weahome.cn/article/gcijhc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部