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
用Mpa設(shè)置Lua的ARGV[1]
*/ Map
調(diào)用腳本并執(zhí)行
*/ List result = redisTemplate1.execute(redisScript, keyList, argvMap); System.out.println(result);
若是出現(xiàn)序列化問題,可以指定序列化方式。
public
3.Lua腳本
--獲取KEY local key1 = KEYS[1] local key2 = KEYS[2] --
獲取ARGV[1],這里對(duì)應(yīng)到應(yīng)用端是一個(gè)List
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í)。