tio-boot?jfinal-plugins框架整合redis示例詳解
jfinal-plugins
tio-boot 是一個(gè)基于Java的網(wǎng)絡(luò)編程框架,用于快速開(kāi)發(fā)高性能的網(wǎng)絡(luò)應(yīng)用程序。
redis 是一個(gè)廣泛使用的開(kāi)源緩存服務(wù),它可以提高應(yīng)用程序的性能和擴(kuò)展性。
整合ecache需要用到j(luò)final-plugins
https://central.sonatype.com/artifact/com.litongjava/jfinal-p...
添加依賴
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> <maven.compiler.source>${java.version}</maven.compiler.source> <maven.compiler.target>${java.version}</maven.compiler.target> <graalvm.version>23.1.1</graalvm.version> <tio.boot.version>1.2.9</tio.boot.version> <lombok-version>1.18.30</lombok-version> <hotswap-classloader.version>1.2.1</hotswap-classloader.version> <final.name>web-hello</final.name> <main.class>com.litongjava.tio.web.hello.HelloApp</main.class> </properties> <dependencies> <dependency> <groupId>com.litongjava</groupId> <artifactId>tio-boot</artifactId> <version>${tio.boot.version}</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok-version}</version> <optional>true</optional> <scope>provided</scope> </dependency> <dependency> <groupId>com.litongjava</groupId> <artifactId>hotswap-classloader</artifactId> <version>${hotswap-classloader.version}</version> </dependency> <dependency> <groupId>com.litongjava</groupId> <artifactId>jfinal-plugins</artifactId> <version>1.0.0</version> </dependency> <dependency> <groupId>com.jfinal</groupId> <artifactId>activerecord</artifactId> <version>5.1.2</version> </dependency> </dependencies>
依賴解釋
- tio-boot是框架核心,
- jfinal-plugins提供與Ehcache的集成
- activerecord jfinal-plugins依賴jfinal-plugins
jfinal-plugins依賴如下
cron4j:2.2.5
ehcache-core:2.6.11
jedis:3.6.3
fst:2.57
RedisPluginConfig 配置類
這個(gè)類是一個(gè)配置類,用于初始化和配置 Redis 插件。它通過(guò) @Configuration
注解標(biāo)記為配置類。類中的方法 redisPlugin
通過(guò) @Initialization
注解標(biāo)記為初始化方法。在這個(gè)方法中,創(chuàng)建了一個(gè) RedisPlugin
實(shí)例并啟動(dòng)它。啟動(dòng)插件意味著 RedisPlugin 將連接redis服務(wù)
package com.litongjava.tio.web.hello.config; import com.litongjava.jfinal.aop.annotation.Configuration; import com.litongjava.jfinal.aop.annotation.Initialization; import com.litongjava.jfinal.plugin.redis.Redis; import com.litongjava.jfinal.plugin.redis.RedisPlugin; @Configuration public class RedisPluginConfig { @Initialization public void redisPlugin() { // 用于緩存bbs模塊的redis服務(wù) RedisPlugin bbsRedis = new RedisPlugin("bbs", "localhost"); bbsRedis.start(); // 測(cè)試連接 Redis.use("bbs").getJedis().connect(); } }
控制器
RedisTestController
包含三個(gè)方法,每個(gè)方法都演示了如何使用Redis進(jìn)行不同類型的操作。以下是對(duì)每個(gè)方法的詳細(xì)解釋:
1. test01() 方法 - 基本的 Redis 緩存操作
- 目的: 演示了如何使用Redis進(jìn)行基本的緩存操作。
過(guò)程:
- 使用
Redis.use("bbs")
獲取名為 "bbs" 的 Redis 緩存實(shí)例。 - 試圖使用鍵 "litong" 從緩存中獲取值。
- 如果值不存在(即
null
),記錄一條日志(表示需要計(jì)算新的值),并將一個(gè)新值 "value___001" 設(shè)置到這個(gè)鍵中。 - 返回緩存中的值(如果是首次調(diào)用,將返回
null
,因?yàn)樵O(shè)置值是在檢查之后)。
- 使用
2. test02() 方法 - 使用 Redis.call 方法
- 目的: 演示了如何使用
Redis.call
方法執(zhí)行更復(fù)雜的Redis操作。 過(guò)程:
- 使用
Redis.call
方法執(zhí)行一個(gè) lambda 表達(dá)式,它使用jedis
客戶端從 Redis 中獲取鍵為 "user" 的值。 - 將獲取的JSON字符串解析為
User
類的實(shí)例。 - 如果未找到用戶(即
user
為null
),記錄一條日志,并創(chuàng)建一個(gè)新的User
實(shí)例。 - 使用
Redis.call
再次將新的User
實(shí)例以JSON格式保存到 Redis 中。 - 返回
User
對(duì)象。
- 使用
3. test03() 方法 - 調(diào)用 Jedis API
- 目的: 演示如何直接調(diào)用 Jedis API 進(jìn)行Redis操作。
過(guò)程:
- 使用
Redis.call
方法執(zhí)行一個(gè) lambda 表達(dá)式,該表達(dá)式調(diào)用j.incrBy
方法增加 "increase" 鍵的值。 j.incrBy("increase", 1)
表示將 "increase" 鍵的值增加1。- 返回增加后的值。
- 使用
package com.litongjava.tio.web.hello.controller; import com.alibaba.fastjson2.JSON; import com.litongjava.jfinal.plugin.redis.Cache; import com.litongjava.jfinal.plugin.redis.Redis; import com.litongjava.tio.http.server.annotation.RequestPath; import com.litongjava.tio.web.hello.model.User; import lombok.extern.slf4j.Slf4j; @Slf4j @RequestPath("/redis/test") public class RedisTestController { /** * 測(cè)試redis * @return */ public Object test01() { String cacheKey = "litong"; Cache bbsCache = Redis.use("bbs"); Object value = bbsCache.get(cacheKey); if (value == null) { log.info("計(jì)算新的值"); bbsCache.set(cacheKey, "value___001"); } return value; } /** * 使用Redis.call方法 * @return */ public User test02() { User user = Redis.call(jedis -> { String userJsonString = jedis.get("user"); return JSON.parseObject(userJsonString, User.class); }); if (user == null) { log.info("重新計(jì)算user"); User user1 = new User("ping", "00000000"); user = user1; // 或者簡(jiǎn)化為下面代碼 Redis.call(j -> { return j.set("user", JSON.toJSONString(user1)); }); } return user; } /** * 調(diào)用Jedis API * @return */ public Long test03() { Long ret = Redis.call(j -> j.incrBy("increase", 1)); return ret; } }
訪問(wèn)測(cè)試
- http://localhost/redis/test/test01
- http://localhost/redis/test/test02
- http://localhost/redis/test/test03
以上就是tio-boot jfinal-plugins整合redis示例詳解的詳細(xì)內(nèi)容,更多關(guān)于tio-boot jfinal-plugins整合redis的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
java+selenium實(shí)現(xiàn)滑塊驗(yàn)證
現(xiàn)在越來(lái)越多的網(wǎng)站都使用采用滑塊驗(yàn)證來(lái)作為驗(yàn)證機(jī)制,用于判斷用戶是否為人類而不是機(jī)器人,本文就將利用java和selenium實(shí)現(xiàn)滑塊驗(yàn)證,希望對(duì)大家有所幫助2023-12-12java連接mongoDB并進(jìn)行增刪改查操作實(shí)例詳解
這篇文章主要介紹了java連接mongoDB并進(jìn)行增刪改查操作,結(jié)合實(shí)例形式詳細(xì)分析了java環(huán)境下MongoDB擴(kuò)展包的下載、安裝及操作MongoDB連接、增刪改查等相關(guān)操作技巧,需要的朋友可以參考下2019-04-04Spring?boot?運(yùn)用策略模式實(shí)現(xiàn)避免多次使用if
這篇文章主要介紹了Spring?boot?運(yùn)用策略模式實(shí)現(xiàn)避免多次使用if,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09