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

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.lryc.cn/news/2392670.html

相关文章:

  • 【Prometheus+Grafana实战:搭建监控系统(含告警配置)】
  • 操作系统原理第9章 磁盘存储器管理 重点内容
  • 一文速通Python并行计算:11 Python多进程编程-进程之间的数据安全传输-基于队列和管道
  • LangChain-Tool和Agent结合智谱AI大模型应用实例2
  • HTML、XML、JSON 是什么?有什么区别?又是做什么的?
  • C++中IO文件输入输出知识详解和注意事项
  • centos7.6阿里云镜像各个版本介绍
  • InnoDB引擎逻辑存储结构及架构
  • KVM——CPU独占
  • 第4讲、Odoo 18 模块系统源码全解与架构深度剖析【modules】
  • pytorch简单线性回归模型
  • 在 HTML 文件中添加图片的常用方法
  • 四、web安全-行业术语
  • Kafka核心技术解析与最佳实践指南
  • Unity基础学习(十二)Unity 物理系统之范围检测
  • JVM 的垃圾回收机制 GC
  • TypeScript 针对 iOS 不支持 JIT 的优化策略总结
  • 00 QEMU源码中文注释与架构讲解
  • ansible template 文件中如果包含{{}} 等非ansible 变量处理
  • Screen 连接远程服务器(Ubuntu)
  • 路由器、网关和光猫三种设备有啥区别?
  • vscode实时预览编辑markdown
  • 2505软考高项第一、二批真题终极汇总
  • 云原生安全基础:Linux 文件权限管理详解
  • A类地址中最小网络号(0.x.x.x) 默认路由 / 无效/未指定地址
  • [嵌入式实验]实验二:LED控制
  • 6.4.2_3最短路径问题_Floyd算法
  • <PLC><socket><西门子>基于西门子S7-1200PLC,实现手机与PLC通讯(通过websocket转接)
  • day 33 python打卡
  • 开发时如何通过Service暴露应用?ClusterIP、NodePort和LoadBalancer类型的使用场景分别是什么?