SpringBoot2.7.4整合Redis

news2025/7/19 3:50:22

目录

一、添加maven依赖

二、添加配置项

三、新增配置类

四、编辑实体类

五、编写接口

六、编写业务层

1.编写service层

2.编写service实现层 

七、测试接口


一、添加maven依赖

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
   <groupId>org.projectlombok</groupId>
   <artifactId>lombok</artifactId>
   <version>1.16.10</version>
</dependency>

、添加配置项

redis:
  database: 1       # 指定所在的库
  host: 127.0.0.1   # Redis服务器地址 写你的ip
  port: 6379        # Redis服务器连接端口
  password: 123456  # Redis服务器连接密码
  lettuce:
    pool:
      max-active: 200   # 连接池最大连接数(使用负值表示没有限制)  类似于mysql的连接池
      max-wait: -1      # 连接池最大阻塞等待时间(使用负值表示没有限制) 表示连接池的链接拿完了 现在去申请需要等待的时间
      max-idle: 10      # 连接池中的最大空闲连接
      min-idle: 0       # 连接池中的最小空闲连接
  timeout: 6000         # 连接超时时间(毫秒) 去链接redis服务端

、新增配置类

package com.saas.springboot.study.config;

import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
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.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

@Configuration
public class RedisConfig {

    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate redisTemplate = new RedisTemplate();
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);

        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);

        jackson2JsonRedisSerializer.setObjectMapper(objectMapper);

        //key使用String序列化
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        //value使用jackson序列化
        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
        redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);

        redisTemplate.afterPropertiesSet();
        return redisTemplate;
    }
}

、编辑实体类

package com.saas.springboot.study.entity.vo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
 * 用户表
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserVO {

    /**
     * 主键id
     */
    Integer id;
    /**
     * 用户名
     */
    String username;
    /**
     * 密码
     */
    String password;
}

、编写接口

package com.saas.springboot.study.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.saas.springboot.study.entity.dto.UserSaveDTO;
import com.saas.springboot.study.entity.po.User;
import com.saas.springboot.study.entity.vo.UserVO;
import com.saas.springboot.study.service.UserService;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

@RestController
public class UserController {

    @Resource
    private UserService userService;

    //保存用户信息到redis
    @PostMapping("/saveUserInfoToRedis")
    public void saveUserInfoToRedis(@RequestBody UserSaveDTO userSaveDTO){
        userService.saveUserInfoToRedis(userSaveDTO);
    }

    //从redis获取用户信息
    @PostMapping("/getUserInfoFromRedis")
    public UserVO getUserInfoFromRedis(){
        return  userService.getUserInfoFromRedis();
    }
}

、编写业务层

1.编写service层

package com.saas.springboot.study.service;

import com.saas.springboot.study.entity.dto.UserSaveDTO;
import com.saas.springboot.study.entity.vo.UserVO;

public interface UserService {

    void saveUserInfoToRedis(UserSaveDTO userSaveDTO);

    UserVO getUserInfoFromRedis();
}

2.编写service实现层 

package com.saas.springboot.study.service.impl;

import com.saas.springboot.study.entity.dto.UserSaveDTO;
import com.saas.springboot.study.entity.vo.UserVO;
import com.saas.springboot.study.service.UserService;
import org.springframework.beans.BeanUtils;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;


@Service
public class UserServiceImpl implements UserService {

    @Resource
    private RedisTemplate redisTemplate;

    @Override
    public void saveUserInfoToRedis(UserSaveDTO userSaveDTO) {
        UserVO user = new UserVO();
        BeanUtils.copyProperties(userSaveDTO,user);
        redisTemplate.opsForValue().set("user",user);
    }

    @Override
    public UserVO getUserInfoFromRedis() {
        return (UserVO)redisTemplate.opsForValue().get("user");
    }
}

、测试接口

1.访问http://localhost:8888/saveUserInfoToRedis 保存redis

2.访问http://localhost:8888/getUserInfoFromRedis 获取redis

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/36091.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

@PostConstruct详解

1、 Servlet中增加了两个影响Servlet生命周期的注解&#xff0c;PostConstruct和PreDestroy&#xff0c;这两个注解被用来修饰一个非静态的void&#xff08;&#xff09;方法。写法有如下两种方式&#xff1a; PostConstruct public void someMethod(){} 或者 public PostConst…

第六章:Java内存模型之JMM

有关JMM的面试题&#xff1f;计算机硬件存储体系Java内存模型Java Memory Model概念原则能干什么JMM三大特性原子性可见性有序性JMM规范下&#xff0c;多线程对变量的读写过程JMM规范下&#xff0c;多线程先行发生原则之happens-beforehappens-before 先行发生原则的概念Happen…

CentOS中yum install命令如何找到安装包的下载地址

我们通常用的yum install命令是怎么找到我们想要的下载地址的&#xff0c;这里简单做一下分析 首先&#xff0c;搜索所有/etc/yum.repos.d下所有repo 在每个repo中都有一个baseurl&#xff0c;这里以docker-ce.repo下载containerd.io 的rpm包为例 docker-ce的部分repo为 [do…

怎么去除视频上的文字?一篇教你:视频上的文字水印怎么去除

原创视频更能够吸引人&#xff0c;但是毕竟热点有限&#xff0c;想要随时保持活跃度和吸引力就必须借助更多的视频素材来留住粉丝。但是很多视频素材是有水印、文字、LOGO或者一些图像的&#xff0c;那怎么去除视频上的文字呢&#xff1f;小编一篇简单文章教你怎么去除视频上的…

GEO振弦式钢筋计的组装

&#xff08;1&#xff09;按钢筋直径选配相应的钢筋计&#xff0c;如果规格不符合&#xff0c;应选择尽量接近于结构钢筋直径 的钢筋计&#xff0c;例如&#xff1a;钢筋直径为 35mm&#xff0c;可使用 NZR-36 或 NZR-32 的钢筋计&#xff0c;此时仪器的最小 读数应进行修…

Quarkus 集成 mailer 使用 easyexcel 发送表格邮件

前言 在quarkus 项目开发中,需要实现一个把用户数据写入到excel 表格中,然后发送邮件给到对应的用户邮箱上,在查找了Quarkus 官方文档后发现,Quarkus 对于发送邮箱的服务是天然支持的. 官方文档: https://cn.quarkus.io/guides/mailer 环境配置 首先发送邮箱服务,那么就需要有…

CAS:89485-61-0,mPEG-N3,mPEG-Azide,甲氧基-peg-叠氮试剂供应

mPEG-N3&#xff08;mPEG-Azide&#xff09;中文名为甲氧基-聚乙二醇-叠氮&#xff0c;它所属分类为Azide PEG Methoxy PEG。CAS编号为89485-61-0。 peg试剂的分子量均可定制&#xff0c;有&#xff1a;甲氧基-聚乙二醇-叠氮 5k、甲氧基-PEG-叠氮 10k、mPEG-Azide 2k、甲氧基-…

error20221125--ssm项目用maven打包报错“找不到程序包 java.lang”或者“程序包javax.crypto不存在”,以及解决方案

从svn拉的ssm项目&#xff0c;写完代码准备发测试&#xff1b;结果用maven打war包的时候报错了 这个时候在控制台找到报错信息如下图 说“在类路径或引导类路径中找不到程序包 java.lang”&#xff1b; 我寻思着&#xff0c;java.lang不是jdk中基础的包吗&#xff1f;不应该有…

c盘哪些文件可以删除?正确答案在这里!

当我们使用电脑时&#xff0c;经常下意识把各种文件数据保存在c盘&#xff0c;导致c盘的空间越来越小。想要清理电脑缓存&#xff0c;c盘哪些文件可以删除&#xff1f;注意&#xff0c;清理文件之前&#xff0c;记得要备份好重要的数据&#xff01;下面一起来看看哪些c盘文件可…

PyQt5 QDockWidget

PyQt5 QDockWidget方法描述setWidget()在Dock窗口区域设置QWidgetsetFloating()设置Dock窗口是否可以浮动&#xff0c;如果设置为True&#xff0c;则表示可以浮动setAllowedAreas()设置窗口可以停靠的区域 ●LeftDockWidgetArea:左边停靠区域●RightDockWidgetArea:右边停靠区域…

kafka消息的序列化与反序列化

一、前言 在使用kafka发送消息时&#xff0c;producer端需要序列化&#xff0c;在大多数场景中&#xff0c; 需要传输的是与业务规则相关的复杂类型&#xff0c; 这就需要自定义数据结构。 Avro是一种序列化框架&#xff0c; 使用JSON来定义schema&#xff0c; sh cema由原始类…

若依前后端分离发布富文本框内容 | uni-app微信小程序展示富文本框内容

微信小程序端引入富文本样式 富文本提交图片json error 一、展示示例&#xff1a; 1.PC端前端发布界面 可以设置文字大小&#xff0c;居中&#xff0c;可以插入图片&#xff0c;设置图片大小&#xff0c;居中。 2.小程序端展示 二、基于若依框架踩坑和实现 1.数据库字段设…

RabbitMQ【直连、主题、扇形交换机实战】

目录 1. 直连交换机&#xff08;Direct实战&#xff09; provider生产者&#xff08;publisher&#xff09; consumer消费者 2. 主题交换机&#xff08;Topic实战&#xff09; provider生产者&#xff08;publisher&#xff09; consumer消费者 3. 扇形交换机&#xff08;Fa…

3.71 OrCAD新建原理图时,每一个类目的含义是什么?OrCAD软件怎么显示元器件的封装名称?

笔者电子信息专业硕士毕业&#xff0c;获得过多次电子设计大赛、大学生智能车、数学建模国奖&#xff0c;现就职于南京某半导体芯片公司&#xff0c;从事硬件研发&#xff0c;电路设计研究。对于学电子的小伙伴&#xff0c;深知入门的不易&#xff0c;特开次博客交流分享经验&a…

第四章:Java琐事

乐观锁和悲观锁悲观锁乐观锁八种案例演示synchronized到底锁的是什么字节码角度分析 Synchronizedsynchronized 同步代码块synchronized 同步方法为什么任意一个对象都可以是锁&#xff1f;公平锁和非公平锁为什么会有公平锁/非公平锁的设计&#xff1f;为什么默认是非公平&…

计算机毕业设计jspKTV点歌系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP KTV点歌系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开 发&#xff0c;数据库为Mysql&#xff0c;使用jav…

Transformer Fusion for Indoor RGB-D Semantic Segmentation非官方自己实现的代码

声明&#xff1a;文章没有官方的代码&#xff0c;这里自己浅显的分析一下。 首先看一下encoder&#xff0c;就是swin transformer&#xff0c;假设RGB的维度为(1,3,480,480),Depth维度为(1,1,480,480)。维度分别变为**(1,64,120,120)—>(1,64,120,120)—>(1,128,60,60)—…

关于conda、虚拟环境、镜像通道、pip、pycharm解释器配置的一些总结

目录conda与虚拟环境相关命令查看当前存在哪些虚拟环境创建虚拟环境克隆虚拟环境删除指定虚拟环境删除指定虚拟环境中某个包设置国内镜像添加Anaconda的TUNA镜像添加USTC仓库镜像设置搜索时显示通道地址Conda 附加库查看channels恢复默认镜像&#xff08;即删除手动配置的全部镜…

TCP/IP五层协议栈(1)

1.应用层协议 应用层协议相对来说比较简单,因为其他层的协议属于硬件上的.相对程序员来说已经固定了.不需要自己设计和实现了. 设计应用层协议有两个要点 要约定好传输的数据还要约定好数据的格式 1.1.协议模板 虽说可以自己设计,不过当前已经有很多模板被大佬设计好了.这…

51单片机语音进店迎宾器统计进店人数可定制播报铃声(可选PCB)

实践制作DIY- GC0115-语音进店迎宾器统计进店人数 一、功能说明&#xff1a; 基于51单片机设计-语音进店迎宾器统计进店人数 功能介绍&#xff1a; 硬件组成&#xff1a;STC89C52&#xff08;AT89C51/52&#xff09;单片机串口语音播报模块2个红外对射传感器一个按键&#x…