欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

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

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

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

lua 腳本

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

使用 lua 腳本的好處:

原子操作:lua腳本是作為一個整體執(zhí)行的,所以中間不會被其他命令插入。減少網(wǎng)絡(luò)開銷:可以將多個請求通過腳本的形式一次發(fā)送,減少網(wǎng)絡(luò)時延。復(fù)用性:lua腳本可以常駐在redis內(nè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的時候,上述配置沒有問題,但在Spring

Boot1.5測試會出錯,需要將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)序列化問題,可以指定序列化方式。

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],這里對應(yīng)到應(yīng)用端是一個List<Map>. -- 注意,這里接收到是的字符串,所以需要用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)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。

文章題目:SpringBoot中怎么利用RedisTemplate執(zhí)行Lua腳本
網(wǎng)站地址:http://www.chinadenli.net/article42/gcijhc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作網(wǎng)站導航手機網(wǎng)站建設(shè)企業(yè)建站網(wǎng)站維護網(wǎng)站設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護公司