当前位置: 首页 > news >正文

Spring Boot3.4.1 集成redis

Spring Boot3.4.1 集成redis

第一步 引入依赖
<!-- redis 缓存操作 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- pool 对象池 -->
<!-- 使用lettuce客户端需要引入commons-pool2依赖 -->
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId>
</dependency>
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.31</version>
</dependency>
第二步 引入配置
spring:# redis 配置redis:# 地址host: 127.0.0.1# 端口,默认为6379port: 6379# 密码,没有不填password: ''# 连接超时时间timeout: 10slettuce:pool:# 连接池中的最小空闲连接min-idle: 0# 连接池中的最大空闲连接max-idle: 8# 连接池的最大数据库连接数max-active: 8# #连接池最大阻塞等待时间(使用负值表示没有限制)max-wait: -1ms
第三步 编写redis配置类
@Configuration
@EnableCaching
public class RedisConfig {@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory){RedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(connectionFactory);template.setValueSerializer(new StringRedisSerializer());// 使用StringRedisSerializer序列化和反序列化redis的key值template.setKeySerializer(new StringRedisSerializer());// 使用StringRedisSerializer序列化和反序列化redis hash类型的key值template.setHashKeySerializer(new StringRedisSerializer());// 序列化和反序列化redis hash类型的value值template.setHashValueSerializer(new StringRedisSerializer());template.afterPropertiesSet();return template;}
}
第四步 编写操作工具类
@Component
public class RedisUtils
{@Autowiredprivate RedisTemplate<String, Object>   redisTemplate;/**  默认过期时长,单位:秒 */public final static long                DEFAULT_EXPIRE = 60 * 60 * 24;public void set(String key, Object value){set(key, value, DEFAULT_EXPIRE);}public void set(String key, Object value, long expire){redisTemplate.opsForValue().set(key, toJson(value));redisTemplate.expire(key, expire, TimeUnit.SECONDS);}public String get(String key){return redisTemplate.opsForValue().get(key).toString();}public <T> T get(String key, Class<T> clazz){String value = redisTemplate.opsForValue().get(key).toString();return value == null ? null : fromJson(value, clazz);}public void delete(String key){redisTemplate.delete(key);}private String toJson(Object object){if (object instanceof Integer || object instanceof Long || object instanceof Float || object instanceof Double|| object instanceof Boolean || object instanceof String){return String.valueOf(object);}return JSON.toJSONString(object);}private <T> T fromJson(String json, Class<T> clazz){return JSON.parseObject(json, clazz);}
}
第五步 测试
@RestController
@RequestMapping("test")
public class TestController {@Autowiredprivate RedisUtils redisUtils;@RequestMapping("/hello")public String hello() {redisUtils.set("test1","hello world");System.out.println(redisUtils.get("test1"));return "hello";}
}
http://www.xdnf.cn/news/728119.html

相关文章:

  • 自动过滤:用 AutoFilterer 实现高性能动态查询
  • 怎么从一台电脑拷贝已安装的所有python第三方库到另一台
  • 分库分表的常见策略
  • Arduino学习-跑马灯
  • day 26 函数专题
  • 基于云模型与TOPSIS评价算法的综合应用研究
  • 深度刨析树结构(从入门到入土讲解AVL树及红黑树的奥秘)
  • 深入理解Transformer架构:从原理到实践
  • python中 @注解 及内置注解 的使用方法总结以及完整示例
  • Jenkins 2.479.1安装和邮箱配置教程
  • SkyWalking如何实现跨线程Trace传递
  • 权威认证与质量保障:第三方检测在科技成果鉴定测试中的核心作用
  • 【C语言编译与链接】--翻译环境和运行环境,预处理,编译,汇编,链接
  • 怎么用外网打开内网的网址?如在异地在家连接访问公司局域网办公网站
  • DeepSeek 赋能数字人直播带货:技术革新重塑电商营销新生态
  • 处理知识库文件_编写powershell脚本文件_批量转换其他格式文件到pdf文件---人工智能工作笔记0249
  • Android 代码阅读环境搭建:VSCODE + SSH + CLANGD(详细版)
  • 生成式AI如何重塑设计思维与品牌创新?从工具到认知革命的跃迁
  • TCP通信与MQTT协议的关系
  • 使用ssh-audit扫描ssh过期加密算法配置
  • Qt实现csv文件按行读取的方式
  • ​什么是RFID电子标签​
  • 1. pytorch手写数字预测
  • 新能源集群划分+电压调节!基于分布式能源集群划分的电压调节策略!
  • 24位高精度数据采集卡NET8860音频振动信号采集监测满足自动化测试应用现场的多样化需求
  • DeepSeek-R1-0528
  • manus对比ChatGPT-Deep reaserch进行研究类论文数据分析!谁更胜一筹?
  • Google Play推出新功能:用户可直接向Gemini提问应用相关问题
  • 无人机多旋翼倾转动力测试系统-适用于(eVTOL开发、缩比模型测试、科研教育)
  • 成都鼎讯--通信干扰设备功能全解析