欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot使用redisTemplate操作lua腳本

 更新時間:2022年08月17日 14:33:24   作者:禿了也弱了。  
本文主要介紹了springboot使用redisTemplate操作lua腳本,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

寫在前面

操作redis使用Lua腳本有諸多好處

  • 減少網(wǎng)絡(luò)開銷:可以將多個請求通過腳本的形式一次發(fā)送,減少網(wǎng)絡(luò)時延和請求次數(shù)。
  • 原子性的操作:Redis會將整個腳本作為一個整體執(zhí)行,中間不會被其他命令插入。因此在編寫腳本的過程中無需擔(dān)心會出現(xiàn)競態(tài)條件,無需使用事務(wù)。
  • 代碼復(fù)用:客戶端發(fā)送的腳步會永久存在redis中,這樣,其他客戶端可以復(fù)用這一腳本來完成相同的邏輯。
  • 速度快:見 與其它語言的性能比較, 還有一個 JIT編譯器可以顯著地提高多數(shù)任務(wù)的性能; 對于那些仍然對性能不滿意的人, 可以把關(guān)鍵部分使用C實現(xiàn), 然后與其集成, 這樣還可以享受其它方面的好處。**
  • 可以移植:只要是有ANSI C 編譯器的平臺都可以編譯,你可以看到它可以在幾乎所有的平臺上運行:從 Windows 到Linux,同樣Mac平臺也沒問題, 再到移動平臺、游戲主機,甚至瀏覽器也可以完美使用 (翻譯成JavaScript)。
  • 源碼小巧:20000行C代碼,可以編譯進182K的可執(zhí)行文件,加載快,運行快。

使用lua

@Test
public void redisLuaTest(){

?? ?String script1 = "if redis.call('setnx', KEYS[1], ARGV[1]) == 1 then redis.call('set', KEYS[2], ARGV[2]) return 1 else return 0 end";
?? ?Long result1 = (Long)redisTemplate.execute(
?? ??? ??? ?new DefaultRedisScript<Long>(script1, Long.class),
?? ??? ??? ?Arrays.asList("key1", "key2"),
?? ??? ??? ?"value1", "value2"
?? ?);
?? ?System.out.println(result1); // 1

?? ?// 如果key1==value1,則刪除key1,返回刪除的狀態(tài),否則返回0
?? ?String script2 = "if redis.call('get', KEYS[1]) == ARGV[1] then return redis.call('del', KEYS[1]) else return 0 end";
?? ?Long result2 = (Long)redisTemplate.execute(
?? ??? ??? ?new DefaultRedisScript<Long>(script2, Long.class),
?? ??? ??? ?Arrays.asList("key1"),
?? ??? ??? ?"value1"
?? ?);
?? ?System.out.println(result2); // 1
}

解釋

/**
第一個參數(shù)使用默認(rèn)的DefaultRedisScript即可;
List<K> keys是key的集合
Object... args是val的集合
*/
@Override
public <T> T execute(RedisScript<T> script, List<K> keys, Object... args) {
    return scriptExecutor.execute(script, keys, args);
}

key的集合,在lua中可以使用KEYS[1]、KEYS[2]……獲取,注意KEYS必須大寫不能拼錯;
val的集合,在lua中可以使用ARGV[1]、ARGV[2]……獲取,注意ARGV必須大寫不能拼錯。

說白了,使用redisTemplate操作lua,也就是傳key的集合和val的集合,這一串lua腳本可以保證其原子性的。

具體lua語法其實也很簡單,基本掌握了if else、循環(huán)、賦值語句,就能應(yīng)付大部分操作redis的命令。

lua中的redis.call命令就是操作redis的命令,第一個參數(shù)就是redis的原始命令,后面的參數(shù)就是redis命令的參數(shù),使用起來也非常方便。

到此這篇關(guān)于springboot使用redisTemplate操作lua腳本的文章就介紹到這了,更多相關(guān)springboot redisTemplate操作lua內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于Cookie與Session的Servlet?API會話管理操作

    基于Cookie與Session的Servlet?API會話管理操作

    這篇文章主要為大家介紹了基于Cookie與Session的Servlet?API會話管理操作詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • 如何實用Java實現(xiàn)合并、拆分PDF文檔

    如何實用Java實現(xiàn)合并、拆分PDF文檔

    這篇文章主要介紹了如何實用Java實現(xiàn)合并、拆分PDF文檔,處理PDF文檔時,這樣的好處是對文檔的存儲、管理很方便。下面將通過Java程序代碼介紹具體的PDF合并、拆分的方法,需要的朋友可以參考下
    2019-07-07
  • java四種引用及在LeakCanery中應(yīng)用詳解

    java四種引用及在LeakCanery中應(yīng)用詳解

    這篇文章主要介紹了java四種引用及在LeakCanery中應(yīng)用,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • SpringBoot MyBatis簡單快速入門例子

    SpringBoot MyBatis簡單快速入門例子

    MyBatis 是一款優(yōu)秀的持久層框架,它支持自定義 SQL、存儲過程以及高級映射。這篇文章主要介紹了SpringBoot MyBatis快速入門-簡單例子,需要的朋友可以參考下
    2021-07-07
  • Java經(jīng)典用法總結(jié)

    Java經(jīng)典用法總結(jié)

    這篇文章主要介紹了Java經(jīng)典用法總結(jié),在本文中,盡量收集一些java最常用的習(xí)慣用法,特別是很難猜到的用法,感興趣的小伙伴們可以參考一下
    2016-02-02
  • SpringMVC+MyBatis分頁(最新)

    SpringMVC+MyBatis分頁(最新)

    本篇文章主要介紹了SpringMVC+MyBatis分頁,具有一定的參考價值,有興趣的可以了解一下。
    2016-12-12
  • 監(jiān)控Spring Boot 項目運行情況操作方法

    監(jiān)控Spring Boot 項目運行情況操作方法

    在實際開發(fā)中,經(jīng)常會遇到想要獲取到服務(wù)器應(yīng)用的運行情況的場景,在微服務(wù)架構(gòu)下對于每個應(yīng)用運行情況的監(jiān)控是保證系統(tǒng)高可用的關(guān)鍵,本文給大家介紹如何實現(xiàn)在Spring Boot的jar包中對系統(tǒng)的運行情況進行監(jiān)控操作,感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • 快速校驗實體類時,@Valid,@Validated,@NotNull注解無效的解決

    快速校驗實體類時,@Valid,@Validated,@NotNull注解無效的解決

    這篇文章主要介紹了快速校驗實體類時,@Valid,@Validated,@NotNull注解無效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • SpringMVC中常用參數(shù)校驗類注解使用示例教程

    SpringMVC中常用參數(shù)校驗類注解使用示例教程

    這篇文章主要介紹了SpringMVC中常用參數(shù)校驗類注解使用示例教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • 用java實現(xiàn)掃雷游戲

    用java實現(xiàn)掃雷游戲

    這篇文章主要為大家詳細(xì)介紹了用java實現(xiàn)掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06

最新評論