Redis-在springboot環境下執行lua腳本

文章目錄

  • 1、什么lua
  • 2、創建SpringBoot工程
  • 3、引入相關依賴
  • 4、創建LUA腳本
  • 5、創建配置類
  • 6、創建啟動類
  • 7、創建測試類

1、什么lua

“Lua”的英文全稱是“Lightweight Userdata Abstraction Layer”,意思是“輕量級用戶數據抽象層”。

2、創建SpringBoot工程

在這里插入圖片描述

3、引入相關依賴

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.0.5</version><relativePath/> <!-- lookup parent from repository --></parent><!-- Generated by https://start.springboot.io --><!-- 優質的 spring/boot/data/security/cloud 框架中文文檔盡在 => https://springdoc.cn --><groupId>com.atguigu</groupId><artifactId>springboot-lua</artifactId><version>0.0.1-SNAPSHOT</version><name>springboot-lua</name><description>springboot-lua</description><properties><java.version>17</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

4、創建LUA腳本

local current = redis.call('GET',KEYS[1])
if current == ARGV[1]then redis.call('SET',KEYS[1],ARGV[2])return true
elseredis.call('SET',KEYS[1],ARGV[3])return true
end
return false

5、創建配置類

package com.atguigu.lua.config;
import org.springframework.context.annotation.Bean;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.script.RedisScript;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import org.springframework.stereotype.Component;
@Component
public class AppRedisConfiguration {//簡單序列化@Beanpublic RedisTemplate<String,String> redisTemplate(RedisConnectionFactory factory) {RedisTemplate<String,String> redisTemplate = new RedisTemplate<>();redisTemplate.setConnectionFactory(factory);// 設置鍵序列化方式redisTemplate.setKeySerializer(new StringRedisSerializer());// 設置簡單類型值的序列化方式redisTemplate.setValueSerializer(new StringRedisSerializer());// 設置默認序列化方式redisTemplate.setDefaultSerializer(new StringRedisSerializer());redisTemplate.afterPropertiesSet();return redisTemplate;}//加載lua腳本,設置返回值類型@Beanpublic RedisScript<Boolean> script() {Resource scriptSource = new ClassPathResource("lua/test.lua");return RedisScript.of(scriptSource, Boolean.class);}}

6、創建啟動類

package com.atguigu.lua;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;// Generated by https://start.springboot.io
// 優質的 spring/boot/data/security/cloud 框架中文文檔盡在 => https://springdoc.cn
@SpringBootApplication
public class SpringbootLuaApplication {public static void main(String[] args) {SpringApplication.run(SpringbootLuaApplication.class, args);}}

7、創建測試類

package com.atguigu.lua;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.script.RedisScript;
import java.util.List;@SpringBootTest
class SpringbootLuaApplicationTests {@Autowiredprivate RedisTemplate redisTemplate;@Autowiredprivate RedisScript redisScript;@Testvoid contextLoads() {redisTemplate.execute(redisScript, List.of("str"),"spring","mybatis","springboot");}}
127.0.0.1:6379> keys *
1) "balance"
2) "str"
127.0.0.1:6379> get str
"springboot"
127.0.0.1:6379> 

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/36635.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/36635.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/36635.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

新能源汽車CAN總線故障定位與干擾排除的幾個方法

CAN總線是目前最受歡迎的現場總線之一,在新能源車中有廣泛應用。新能源車的CAN總線故障和隱患將影響駕駛體驗甚至行車安全,如何進行CAN總線故障定位及干擾排除呢? 目前,國內機動車保有量已經突破三億大關。由于大量的燃油車帶來嚴峻的環境問題,因此全面禁售燃油車的日程在…

汽車租賃系統

摘 要 隨著汽車租賃市場的快速發展&#xff0c;為了提高汽車租賃服務的效率和用戶體驗&#xff0c;本論文設計與實現了一款基于Java的汽車租賃系統。 該系統采用B/S架構&#xff0c;利用JavaWeb技術和MySQL數據庫實現了車輛信息管理、在線車輛租賃、門店出車模塊、租賃訂單信息…

1. Tensorrt-llm 基礎

1.Tensorrt-llm安裝 os: ubuntu 22.04 1.1搭建docker 環境 切換到 root 用戶 sodu passwd root 更新apt sudo apt-get update --fix-missing 更新docker sudo apt-get upgrade docker-ce 安裝nvidia 容器運行時&#xff0c;避免如下錯誤 Error response from daemon…

Android Kotlin 中的閉包函數

閉包函數是現代編程語言中一個重要的概念&#xff0c;Kotlin 作為一種現代的 JVM 語言&#xff0c;自然也支持閉包函數。本文將詳細介紹閉包函數的概念、在Kotlin 中的使用方法&#xff0c;以及一些常見的應用場景。 什么是閉包函數&#xff1f; 閉包函數&#xff0c;也稱為閉…

每天一個項目管理概念之WBS

項目管理中的工作分解結構&#xff08;Work Breakdown Structure&#xff0c;簡稱WBS&#xff09;是規劃和管理項目的核心工具之一&#xff0c;它通過將復雜的項目任務細分為更小、更易管理的部分來提高項目執行的效率與效果。WBS不僅有助于明確項目范圍&#xff0c;還為時間管…

[RPI] istoreos安裝esphome

esphome可以提供了一個集成的編譯環境,同時他又可以通過無線方式更新firmware,這無疑方便了我們的開發工作。 istoreos商店沒有提供esphome,所以我們需要自己用‘類似’命令行的方式來安裝, 1. 拉取esphome鏡像 依次點擊左側邊欄Docker -> 鏡像,輸入esphome/esphome…

【LeetCode面試經典150題】117. 填充每個節點的下一個右側節點指針 II

一、題目 117. 填充每個節點的下一個右側節點指針 II - 力扣&#xff08;LeetCode&#xff09; 給定一個二叉樹&#xff1a; struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每個 next 指針&#xff0c;讓這個指針指向其下一個右側節點。如果找不到下一個…

React@16.x(42)路由v5.x(7)常見應用場景(4)- 路由切換動畫

目錄 1&#xff0c;實現路由切換基礎樣式 2&#xff0c;使用 CSSTransition 添加動畫1&#xff0c;自定義動畫組件 *TransitionRoute.jsx*2&#xff0c;*App.jsx*3&#xff0c;樣式改動 3&#xff0c;注意點 通過一個例子來說明如何實現。 1&#xff0c;實現路由切換 基礎樣式…

[DDD] 領域驅動設計簡介

領域驅動設計 Domain Driven Design 1 DDD簡介 領域驅動設計&#xff08;Domain-Driven Design&#xff0c;簡稱DDD&#xff09;是一種軟件開發方法論&#xff0c;它強調軟件設計應緊密圍繞業務領域模型進行。DDD的核心思想是將實現與業務邏輯分離&#xff0c;通過深入理解和…

億發進銷存管理系統+:多終端無縫協同,實現經營銷售場景全覆蓋

億發軟件憑借產品、市場、業務的深入理解&#xff0c;在進銷存基礎上進行了延伸&#xff0c;推出多終端、一體化的“進銷存管理系統”多元產品矩陣。對企業經營中進貨、出貨、銷售、付款等進行全程跟蹤管理。有效輔助企業解決業務管理、銷售管理、庫存管理、財務管理等一系列問…

Java路徑操縱漏洞示例與解決賞析之一

示例代碼 public static List<File> findClassesInPackage(String codePath,String packageName, boolean recursive) {List<File> classFiles = new ArrayList<>();String packagePath = packageName.replace(., /);File directory = new File(codePath + &…

【大數據】—量化交易實戰案例雙均線策略(移動平均線)

聲明&#xff1a;股市有風險&#xff0c;投資需謹慎&#xff01;本人沒有系統學過金融知識&#xff0c;對股票有敬畏之心沒有踏入其大門&#xff0c;今天用另外一種方法模擬炒股&#xff0c;后面的模擬的實戰全部用同樣的數據&#xff0c;最后比較哪種方法賺的錢多。 量化交易…

【項目實訓】各種反爬策略及爬蟲困難點總結

在這里&#xff0c;我總結了本次項目的數據收集過程中遇到的反爬蟲策略以及一些爬蟲過程中容易出現問題的地方。 user-agent 簡單的設置user-agent頭部為瀏覽器即可&#xff1a; 爬取標簽中帶href屬性的網頁 對于顯示崗位列表的頁面&#xff0c;通常檢查其源代碼就會發現&…

深入理解鏈表:基礎概念、操作及應用

前言 鏈表&#xff08;Linked List&#xff09;是一種重要的數據結構&#xff0c;廣泛應用于各種算法和系統設計中。本文將詳細介紹鏈表的基本概念、類型、基本操作及其在實際編程中的應用&#xff0c;并使用C語言代碼示例進行說明。 鏈表的基本概念 鏈表是一種線性數據結構…

【數據結構】(C語言):動態數組

動態數組&#xff1a; 內存區域連續&#xff0c;即每個元素的內存地址連續。可用索引查看元素&#xff0c;數組[索引號]。指定位置刪除元素&#xff0c;該位置之后的元素全部往前移動一位。指定位置添加元素&#xff0c;從最后到該位置的元素全部往后移動一位。物理大小&#…

【保姆級講解ECMAScript和JavaScript之間的區別】

&#x1f3a5;博主&#xff1a;程序員不想YY啊 &#x1f4ab;CSDN優質創作者&#xff0c;CSDN實力新星&#xff0c;CSDN博客專家 &#x1f917;點贊&#x1f388;收藏?再看&#x1f4ab;養成習慣 ?希望本文對您有所裨益&#xff0c;如有不足之處&#xff0c;歡迎在評論區提出…

mysql 升級到8.0

MySQL :: MySQL 8.0 Reference Manual :: 3.7 Upgrading MySQL Binary or Package-based Installations on Unix/Linux 2種升級方式&#xff1a; In-Place Upgrade &#xff1a; data目錄替換 Logical Upgrade&#xff1a; 通過 mysqldump 導出為sql文本后&#xff0c;導入…

全面國產化信創適配改造方案說明

一、概敘 系統的全面國產化適配改造需要從多個方面進行考慮&#xff0c;改造前需要進行充分的論證&#xff0c;在滿足具體業務場景的前提下&#xff0c;以確保系統的穩定性和安全性&#xff0c;同時還要考慮技術的發展&#xff0c;不斷優化和更新。因此全面國產化適配改造也面臨…

Redis集群安裝(三主三從一哨兵)

Redis集群安裝&#xff08;三主三從一哨兵&#xff09; 一&#xff0c;搭建環境 ? 在三臺服務器上分別搭建redis并測試是否能啟動&#xff08;搭建方法&#xff09; 二&#xff0c;Redis cluster三主三從 配置環境變量 vim /etc/profile #添加如下內容 export REDIS_HOME…

AI 開發平臺(Coze)搭建《AI女友(多功能版本)》

前言 本文講解如何從零開始&#xff0c;使用扣子平臺去搭建《AI女友&#xff08;多功能版本&#xff09;》 bot直達&#xff1a;AI女友&#xff08;多功能版&#xff09; - 扣子 AI Bot (coze.cn) 歡迎大家前去體驗&#xff01;&#xff01;&#xff01; 正文 功能介紹 …