hutool RedisDS
添加依赖,tio-boot 已经内置了 hutool-all 以来,包含 hutool-redis,主要添加 jedis 依赖即可
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>4.3.1</version>
</dependency>
配置类
package com.imaginix.kimi.service.monitoring.config;
import com.jfinal.kit.StrKit;
import com.litongjava.jfinal.aop.annotation.ABean;
import com.litongjava.jfinal.aop.annotation.AConfiguration;
import com.litongjava.tio.utils.environment.EnvUtils;
import cn.hutool.db.nosql.redis.RedisDS;
import cn.hutool.setting.Setting;
import redis.clients.jedis.Protocol;
@AConfiguration
public class HutoolRedisConfig {
@ABean(destroyMethod = "close")
public RedisDS redisDS() {
String redisHost = EnvUtils.get("redis.host", "127.0.0.1");
String redisPort = EnvUtils.get("redis.port", "6379");
String redisPassword = EnvUtils.get("redis.password");
// 配置你的Redis连接信息
Setting setting = new Setting();
String group = "redis";
// 地址
setting.setByGroup("host", group, redisHost);
// 端口
setting.setByGroup("port", group, redisPort);
// 密码
if (!StrKit.isBlank(redisPassword)) {
setting.setByGroup("password", group, redisPassword);
}
// 连接超时
setting.setByGroup("timeout", group, String.valueOf(Protocol.DEFAULT_TIMEOUT));
setting.setByGroup("connectionTimeout", group, String.valueOf(Protocol.DEFAULT_TIMEOUT));
// 读取数据超时
setting.setByGroup("timeout", group, String.valueOf(Protocol.DEFAULT_TIMEOUT));
setting.setByGroup("soTimeout", group, String.valueOf(Protocol.DEFAULT_TIMEOUT));
// 数据库序号
setting.setByGroup("database", group, String.valueOf(Protocol.DEFAULT_DATABASE));
// 客户端名
setting.setByGroup("clientName", group, "Hutool");
// 是否使用SSL
setting.setByGroup("ssl", group, String.valueOf(false));
RedisDS redisDS = new RedisDS(setting, group);
// 连接redis
redisDS.getJedis();
return redisDS;
}
}
测试 Controller
package com.litongjava.tio.boot.hello.AController;
import cn.hutool.db.nosql.redis.RedisDS;
import com.litongjava.jfinal.aop.Aop;
import com.litongjava.tio.http.common.HttpRequest;
import com.litongjava.annotation.RequestPath;
import lombok.extern.slf4j.Slf4j;
@AController
@RequestPath("/huredis")
@Slf4j
public class HuRedisTestController {
@RequestPath("/test")
public String test(HttpRequest request) {
RedisDS redisDS = Aop.get(RedisDS.class);
String value = redisDS.getStr("key");
if (value == null) {
log.info("计算新的value");
redisDS.setStr("key", "value");
}
return value;
}
}
这两段代码分别是配置类和控制器类的示例,用于在 Java 项目中使用 Hutool 的 RedisDS
类来配置和访问 Redis 数据库。
配置类 (HutoolRedisConfig
)
1 类和方法注解:
@AConfiguration
: 表示这是一个配置类,用于定义和配置 Beans。@ABean(destroyMethod = "close")
: 创建一个 Bean,并指定当 Bean 不再需要时应该调用的销毁方法,这里是close()
。
- 方法
redisDS()
:
- 从
Enviorment
实例(由Aop.get(Enviorment.class)
获取)中读取 Redis 的配置信息(主机、端口、密码等)。 - 使用 Hutool 的
Setting
类来设置 Redis 的各种配置参数,如主机、端口、密码、超时、数据库索引等。 - 创建
RedisDS
实例,传入配置的Setting
对象和配置组名。 - 通过
redisDS.getJedis()
连接到 Redis 数据库。 - 返回
RedisDS
实例。
控制器类 (HuRedisTestController
)
- 类和方法注解:
@RequestPath("/huredis")
: 定义控制器的基本路径。@Slf4j
: Lombok 注解,为类提供一个日志实例。
- 方法
test(HttpRequest request)
:
- 通过
Aop.get(RedisDS.class)
获取 RedisDS 实例。 - 使用
redisDS.getStr("key")
尝试从 Redis 获取与"key"
关联的值。 - 如果值不存在(
null
),则记录信息并使用redisDS.setStr("key", "value")
设置新的键值对。 - 返回从 Redis 获取的值(如果之前不存在,则为
null
)。
这段代码展示了如何使用 Hutool 提供的 RedisDS
类在 tio-boot 框架中配置和访问 Redis 数据库。配置类 HutoolRedisConfig
负责设置 Redis 连接,而控制器类 HuRedisTestController
则处理具体的 Redis 交互逻辑。