tio-boot jfinal-plugins框架整合redis示例详解

 更新时间:2023年12月27日 08:54:16   作者:李通  
这篇文章主要为大家介绍了tio-boot jfinal-plugins框架整合redis示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

jfinal-plugins

tio-boot 是一个基于Java的网络编程框架,用于快速开发高性能的网络应用程序。

redis 是一个广泛使用的开源缓存服务,它可以提高应用程序的性能和扩展性。

整合ecache需要用到jfinal-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 配置类

这个类是一个配置类,用于初始化和配置 Redis 插件。它通过 @Configuration 注解标记为配置类。类中的方法 redisPlugin 通过 @Initialization 注解标记为初始化方法。在这个方法中,创建了一个 RedisPlugin 实例并启动它。启动插件意味着 RedisPlugin 将连接redis服务

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服务
    RedisPlugin bbsRedis = new RedisPlugin("bbs", "localhost");
    bbsRedis.start();
    // 测试连接
    Redis.use("bbs").getJedis().connect();
  }
}

控制器

RedisTestController 包含三个方法,每个方法都演示了如何使用Redis进行不同类型的操作。以下是对每个方法的详细解释:

1. test01() 方法 - 基本的 Redis 缓存操作

  • 目的: 演示了如何使用Redis进行基本的缓存操作。
  • 过程:

    • 使用 Redis.use("bbs") 获取名为 "bbs" 的 Redis 缓存实例。
    • 试图使用键 "litong" 从缓存中获取值。
    • 如果值不存在(即 null),记录一条日志(表示需要计算新的值),并将一个新值 "value___001" 设置到这个键中。
    • 返回缓存中的值(如果是首次调用,将返回 null,因为设置值是在检查之后)。

2. test02() 方法 - 使用 Redis.call 方法

  • 目的: 演示了如何使用 Redis.call 方法执行更复杂的Redis操作。
  • 过程:

    • 使用 Redis.call 方法执行一个 lambda 表达式,它使用 jedis 客户端从 Redis 中获取键为 "user" 的值。
    • 将获取的JSON字符串解析为 User 类的实例。
    • 如果未找到用户(即 user 为 null),记录一条日志,并创建一个新的 User 实例。
    • 使用 Redis.call 再次将新的 User 实例以JSON格式保存到 Redis 中。
    • 返回 User 对象。

3. test03() 方法 - 调用 Jedis API

  • 目的: 演示如何直接调用 Jedis API 进行Redis操作。
  • 过程:

    • 使用 Redis.call 方法执行一个 lambda 表达式,该表达式调用 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 {
  /**
   * 测试redis
   * @return
   */
  public Object test01() {
    String cacheKey = "litong";
    Cache bbsCache = Redis.use("bbs");
    Object value = bbsCache.get(cacheKey);
    if (value == null) {
      log.info("计算新的值");
      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("重新计算user");
      User user1 = new User("ping", "00000000");
      user = user1;
      // 或者简化为下面代码
      Redis.call(j -> {
        return j.set("user", JSON.toJSONString(user1));
      });
    }
    return user;
  }
  /**
   * 调用Jedis API
   * @return
   */
  public Long test03() {
    Long ret = Redis.call(j -> j.incrBy("increase", 1));
    return ret;
  }
}

访问测试

  • http://localhost/redis/test/test01 
  • http://localhost/redis/test/test02 
  • http://localhost/redis/test/test03

以上就是tio-boot jfinal-plugins整合redis示例详解的详细内容,更多关于tio-boot jfinal-plugins整合redis的资料请关注脚本之家其它相关文章!

相关文章

  • Java Map集合用法详解

    Java Map集合用法详解

    Map用于保存具有映射关系的数据,Map集合里保存着两组值,一组用于保存Map的ley,另一组保存着Map的value;Map集合和查字典类似,通过key找到对应的value,通过页数找到对应的信息。用学生类来说,key相当于学号,value对应name,age,sex等信息。用这种对应关系方便查找
    2021-10-10
  • 详解Spring Cloud中Hystrix的请求合并

    详解Spring Cloud中Hystrix的请求合并

    这篇文章主要介绍了详解Spring Cloud中Hystrix的请求合并,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • SpringBoot自定义加载yml实现方式,附源码解读

    SpringBoot自定义加载yml实现方式,附源码解读

    这篇文章主要介绍了SpringBoot自定义加载yml实现方式附源码解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java基础知识之I/O流和File类文件操作

    Java基础知识之I/O流和File类文件操作

    众所周知java语言提供给程序员非常多的包供编程时使用,方便又快捷,下面这篇文章主要给大家介绍了关于Java基础知识之I/O流和File类文件操作的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • Java String不可变性实现原理解析

    Java String不可变性实现原理解析

    这篇文章主要介绍了Java String不可变性实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Java中Collection、List、Set、Map之间的关系总结

    Java中Collection、List、Set、Map之间的关系总结

    今天小编就为大家分享一篇关于Java中Collection、List、Set、Map之间的关系总结,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • java正则表达式获取url的host示例

    java正则表达式获取url的host示例

    使用httpclient抓取页面信息时需要填写HOST,使用此正则提取抓取URL的HOST内容
    2014-02-02
  • Java Spring开发环境搭建及简单入门示例教程

    Java Spring开发环境搭建及简单入门示例教程

    这篇文章主要介绍了Java Spring开发环境搭建及简单入门示例,结合实例形式分析了spring环境搭建、配置、使用方法及相关注意事项,需要的朋友可以参考下
    2017-11-11
  • JavaWeb中的Cookie和Session解读

    JavaWeb中的Cookie和Session解读

    这篇文章主要介绍了JavaWeb中的Cookie和Session解读,Cookie是servlet发送到Web浏览器的少量信息,该信息由浏览器保存,然后发送回服务器,一般情况下,Cookie是以键值对进行表示的,Cookie的值可以唯一地标识客户端,因此Cookie常用于会话管理,需要的朋友可以参考下
    2023-10-10
  • javascript checkbox全选和反选的简单实现

    javascript checkbox全选和反选的简单实现

    这篇文章主要介绍了javascript checkbox全选和反选的简单实现的相关资料,需要的朋友可以参考下
    2017-05-05

最新评论