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

springboot引入redis

1,引入依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.7.18</version>
</dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.32</version>
</dependency>
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version>
</dependency><dependency><groupId>com.alibaba.fastjson2</groupId><artifactId>fastjson2</artifactId><version>2.0.50</version>
</dependency>
<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.14</version>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><version>2.7.18</version>
</dependency>

2,application.yml添加

redis:cache: falsehost: xxxxx  # Redis服务器地址port: 6379       # Redis服务器端口database: 0      # Redis数据库索引password: xxxxxx #密码lettuce:pool:max-active: 20  # 连接池最大连接数max-wait: -1    # 最大阻塞等待时间max-idle: 5     # 连接池中最大空闲连接min-idle: 0     # 连接池中最小空闲连接

3,创建RedisUtil.java类

package com.xxxx.util;import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;@Component
public class RedisUtil {@Autowiredprivate StringRedisTemplate redisTemplate;// 添加key-value对,并设置过期时间public void set(String key, String value, Long timeout, TimeUnit timeUnit) {if (timeout == null || timeUnit == null) {// 默认过期时间为一天timeout = 1L;timeUnit = TimeUnit.DAYS;}redisTemplate.opsForValue().set(key, value, timeout, timeUnit);}// 添加key-value对,不过期public void set(String key, String value) {redisTemplate.opsForValue().set(key, value);}// 获取key对应的valuepublic String get(String key) {return redisTemplate.opsForValue().get(key);}// 修改key的value,并设置过期时间public void update(String key, String newValue, Long timeout, TimeUnit timeUnit) {if (timeout == null || timeUnit == null) {// 默认过期时间为一天timeout = 1L;timeUnit = TimeUnit.DAYS;}redisTemplate.opsForValue().set(key, newValue, timeout, timeUnit);}// 修改key的value,不修改过期时间public void update(String key, String newValue) {redisTemplate.opsForValue().set(key, newValue);}// 设置key的过期时间public void expire(String key, Long timeout, TimeUnit timeUnit) {redisTemplate.expire(key, timeout, timeUnit);}// 删除keypublic void delete(String key) {redisTemplate.delete(key);}// 从Redis获取字符串并转换为List<T>public <T> List<T> getStringAsList(String key, Class<T> type) throws IOException {String json = redisTemplate.opsForValue().get(key);if (json == null) {return null;}ObjectMapper mapper = new ObjectMapper();return mapper.readValue(json, mapper.getTypeFactory().constructCollectionType(List.class, type));}// 从Redis获取字符串并转换为Map<String, Long>public <T> Map<String, T> getStringAsMap(String key, Class<T> type) throws IOException {String json = redisTemplate.opsForValue().get(key);if (json == null) {return null;}ObjectMapper mapper = new ObjectMapper();// 使用TypeReference来指定Map的泛型类型TypeReference<Map<String, T>> typeRef = new TypeReference<Map<String, T>>() {};return mapper.readValue(json, typeRef);}
}

一年之计在于春,一天之计在于晨。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • UML建模-测试用例
  • c++的异常处理机制(try、catch、throw)
  • PDF——分割pdf的10个工具
  • 基于STC89C52单片机的U盘设计
  • SVN工作原理和使用示例
  • conda pack迁移环境
  • leetcode-121-买卖股票的最佳时机
  • Java数组1
  • 数据库篇--八股文学习第十七天| 什么是慢查询?原因是什么?可以怎么优化?;undo log、redo log、binlog 有什么用?
  • 笔记:简单介绍WPF中RenderTransform,LayoutTransform, VisualTransform区别
  • 知识改变命运:Java 语言 【可变参数】
  • 【竞品分析】案例分析:直播类竞品分析,理解什么是竞品。
  • 怎样在 SQL 中创建视图(VIEW),以及视图的作用和优势是什么?
  • 【递归 + 记忆化搜索优化】力扣494. 目标和
  • Linux小组件:makefile
  • [数据结构]链表的实现在PHP中
  • __proto__ 和 prototype的关系
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • es6(二):字符串的扩展
  • gf框架之分页模块(五) - 自定义分页
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • JavaScript设计模式之工厂模式
  • Java知识点总结(JavaIO-打印流)
  • Koa2 之文件上传下载
  • python_bomb----数据类型总结
  • Swoft 源码剖析 - 代码自动更新机制
  • vue总结
  • WePY 在小程序性能调优上做出的探究
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 将 Measurements 和 Units 应用到物理学
  • 数据仓库的几种建模方法
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • Java性能优化之JVM GC(垃圾回收机制)
  • NLPIR智能语义技术让大数据挖掘更简单
  • ​zookeeper集群配置与启动
  • # wps必须要登录激活才能使用吗?
  • (leetcode学习)236. 二叉树的最近公共祖先
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (三)Honghu Cloud云架构一定时调度平台
  • (五十)第 7 章 图(有向图的十字链表存储)
  • (一)Java算法:二分查找
  • (转)Sublime Text3配置Lua运行环境
  • (转)甲方乙方——赵民谈找工作
  • .project文件
  • :=
  • @PostConstruct 注解的方法用于资源的初始化
  • @TableLogic注解说明,以及对增删改查的影响
  • @Transactional 详解
  • [ C++ ] STL_vector -- 迭代器失效问题
  • [ HTML + CSS + Javascript ] 复盘尝试制作 2048 小游戏时遇到的问题
  • [ vulhub漏洞复现篇 ] GhostScript 沙箱绕过(任意命令执行)漏洞CVE-2019-6116
  • [\u4e00-\u9fa5] //匹配中文字符