中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在SpringBoot中利用RedisTemplate執行Lua腳本

發布時間:2021-05-19 16:21:19 來源:億速云 閱讀:394 作者:Leah 欄目:編程語言

本篇文章為大家展示了怎么在SpringBoot中利用RedisTemplate執行Lua腳本,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

lua 腳本

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

使用 lua 腳本的好處:

原子操作:lua腳本是作為一個整體執行的,所以中間不會被其他命令插入。
減少網絡開銷:可以將多個請求通過腳本的形式一次發送,減少網絡時延。
復用性:lua腳本可以常駐在redis內存中,所以在使用的時候,可以直接拿來復用,也減少了代碼量。

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.調用腳本

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

用Mpa設置Lua的ARGV[1]

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

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

調用腳本并執行

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

System.out.println(result);

若是出現序列化問題,可以指定序列化方式。

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],這里對應到應用端是一個List<Map>. -- 注意,這里接收到是的字符串,所以需要用csjon庫解碼成table類型 local

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

springboot是什么

springboot一種全新的編程規范,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程,SpringBoot也是一個服務于框架的框架,服務范圍是簡化配置文件。

上述內容就是怎么在SpringBoot中利用RedisTemplate執行Lua腳本,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

密山市| 萝北县| 江门市| 拉萨市| 神农架林区| 上虞市| 五常市| 莱州市| 华池县| 崇阳县| 类乌齐县| 庄浪县| 马鞍山市| 赫章县| 定兴县| 平潭县| 湖南省| 小金县| 宜良县| 吴忠市| 阿图什市| 阜平县| 鹰潭市| 金寨县| 霍山县| 河北区| 云林县| 巴中市| 漳州市| 专栏| 神农架林区| 确山县| 闻喜县| 观塘区| 石城县| 南木林县| 通山县| 峨眉山市| 左云县| 娄底市| 科尔|