在项目中使用 redis存储 数据,提高 项目运行速度

server/2024/11/15 0:42:12/

在项目中发现从数据库中直接查找数据非常慢,所以想到了使用redis来加速

1. 引入依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

在yml配置中,设置redis地址

spring:redis:host: localhostport: 6379password: xxxxxdatabase: 1lettuce:pool:# 连接池中最大空闲连接max-idle: 8# 连接池中最大阻塞等待时间(如果为负值则说明无限制)max-wait: -1# 连接池中最大的空闲连接数max-active: 8

 

2.  设置redis序列化器

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializer;/*** 当前配置类不是必须的,因为 Spring Boot 框架会自动装配 RedisTemplate 对象,* 但是默认的key序列化器为JdkSerializationRedisSerializer,* 导致我们存到Redis中后的数据和原始数据有差别,故设置为StringRedisSerializer序列化器。*/
@Configuration
public class RedisTemplateConfig {@Beanpublic RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory){RedisTemplate<String ,String> redisTemplate = new RedisTemplate<>();//这里可以根据自己的需要修改,我因为键和值都是字符串类型的所以设置成了<String,String>redisTemplate.setConnectionFactory(connectionFactory);redisTemplate.setKeySerializer(RedisSerializer.string());//这里也需要修改return redisTemplate;}
}

3. 项目中使用

@Service
public class InspectionStationInfoServiceImpl extends ServiceImpl<InspectionStationInfoMapper, InspectionStationInfo>implements IInspectionStationInfoService {@Autowiredprivate RedisTemplate redisTemplate;/*** 根据单位id,查询对应机构的首检合格率* @param unitId 单位id* @return 首检合格率*/private String firstInspectionPassRate(String unitId){ValueOperations<String ,String> operations = redisTemplate.opsForValue();String key = String.format("SZJDC:CHECKRESULT:BGBH:%s",unitId);//在redis中获取 首检合格率String rate = operations.get(key);return rate;}}

4. 设置定时任务来将数据存储进redis,规定每天凌晨1点更新

@Component
@Slf4j
public class FirstInspectionPassRateTask {@Autowiredprivate CheckResultMapper checkResultMapper;@Autowiredprivate InspectionStationInfoMapper inspectionStationInfoMapper;@Autowiredprivate RedisTemplate redisTemplate;//每天凌晨一点@Scheduled(cron = "0 0 1 * * ?")public void calculateFirstInspectionPassRate(){log.info("####### 定时任务开启......");//单位id 集合List<String> unitIdList = inspectionStationInfoMapper.selectUnitId();unitIdList = Optional.ofNullable(unitIdList).orElse(new ArrayList<>());ValueOperations<String ,String> operations = redisTemplate.opsForValue();unitIdList.forEach(unitId -> {//根据单位id,查询对应机构的首检合格率String rate = checkResultMapper.firstInspectionPassRate(unitId);String key = String.format("SZJDC:CHECKRESULT:BGBH:%s",unitId);operations.set(key,rate);});}}

后面如果有改变就继续写


http://www.ppmy.cn/server/111707.html

相关文章

【学术会议征稿】第四届智能电网与能源互联网国际会议(SGEI 2024)

第四届智能电网与能源互联网国际会议&#xff08;SGEI 2024&#xff09; 2024 4th International Conference on Smart Grid and Energy Internet 为交流近年来国内外在智能电网和能源互联网领域的理论、技术和应用的最新进展&#xff0c;展示最新成果&#xff0c;由沈阳工业…

跟《经济学人》学英文:2024年08月31日这期 Funding social care: an international comparison

Funding social care: an international comparison Lessons for Britain from other countries 原文&#xff1a; To judge by the record of successive British governments, reforming social care is almost impossible. But other rich countries have managed to gra…

uniapp开发鸿蒙,是前端新出路

uniapp开发鸿蒙&#xff0c;是前端新出路吗&#xff1f; 相信不少前端从业者一听uniapp支持开发鸿蒙Next后非常振奋。小编作为7年前端也是非常激动&#xff0c;第一时间体验了下。在这里也给大家分享一下我的看法 uniapp开发鸿蒙优势 1.对于前端开发者而言&#xff0c;几乎无需…

基于Android Studio的用户行程记录APK开发指南(一):项目基础配置与速通Kotlin

前言 最近博主在unity开发独立游戏&#xff0c;UE5系列的相关长期教程先暂时不更新了~ 请大家多多谅解~本系列教程我们来看看如何使用Android Studio去开发一个APK用于用户的实时行程记录。本期我们来项目基础配置与速通Kotlin 安装Android Studio 我们进入Android Studio的官…

Java中等题-去除重复字母(力扣)

给你一个字符串 s &#xff0c;请你去除字符串中重复的字母&#xff0c;使得每个字母只出现一次。需保证 返回结果的 字典序 最小&#xff08;要求不能打乱其他字符的相对位置&#xff09;。 示例 1&#xff1a; 输入&#xff1a;s "bcabc" 输出&#xff1a;&quo…

【嵌入式学习笔记】---- STM32里的DMA

在嵌入式系统设计中&#xff0c;数据传输的效率对系统性能至关重要。STM32系列微控制器广泛应用于各种嵌入式系统中&#xff0c;其DMA&#xff08;Direct Memory Access&#xff0c;直接内存访问&#xff09;技术为高效的数据传输提供了关键支持。本文将深入探讨STM32中DMA技术…

【2024年Python量化分析】为股票数据量化分析最新整理的免费获取股票实时行情数据API接口搭配多种语言代码实例演示

​ 最近一两年&#xff0c;股票量化分析越来越火了&#xff0c;想入门这行&#xff0c;首先得搞定股票数据。毕竟&#xff0c;所有量化分析都是靠数据说话的&#xff0c;实时交易、历史交易、财务、基本面&#xff0c;这些数据咱们都得有。咱们的目标就是把这些数据里的金子挖出…

oracle 定时任务dbms_job 增删改查

在Oracle数据库中&#xff0c;DBMS_JOB包曾经被广泛用于调度和管理数据库作业&#xff08;jobs&#xff09;。然而&#xff0c;从Oracle 11g Release 2开始&#xff0c;Oracle推荐使用更先进的DBMS_SCHEDULER包来替代DBMS_JOB&#xff0c;因为DBMS_SCHEDULER提供了更丰富的功能…