亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

怎么在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

寿光市| 兴隆县| 丹凤县| 定州市| 全椒县| 苏尼特左旗| 汕头市| 长兴县| 霍城县| 花垣县| 林西县| 阳朔县| 平乡县| 新乡市| 定西市| 颍上县| 公安县| 攀枝花市| 山阴县| 安仁县| 革吉县| 黎城县| 公主岭市| 卢氏县| 宣威市| 自贡市| 三台县| 湖北省| 丹阳市| 陈巴尔虎旗| 安溪县| 吉木乃县| 宽甸| 兴义市| 尉氏县| 鹤岗市| 天全县| 珲春市| 右玉县| 那坡县| 衡水市|