iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >SpringBoot怎么整合Redis实现序列化存储Java对象
  • 445
分享到

SpringBoot怎么整合Redis实现序列化存储Java对象

2023-07-05 14:07:31 445人浏览 独家记忆
摘要

今天小编给大家分享一下SpringBoot怎么整合Redis实现序列化存储Java对象的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解

今天小编给大家分享一下SpringBoot怎么整合Redis实现序列化存储Java对象的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

一、背景

1、思考

通过我们前面的学习,我们已经可以往 Redis 中存入字符串,那么我们要往 Redis 中存入 Java 对象该怎么办呢?

2、方案

我们可以将 Java 对象转化为 JSON 对象,然后转为 jsON 字符串,存入 Redis,那么我们从 Redis 中取出该数据的时候,我们也只能取出字符串,并转为 Java 对象,这一系列的操作是不是显得有些麻烦呢?

二、源码分析

SpringBoot怎么整合Redis实现序列化存储Java对象

  • 以上是 RedisAutoConfiguration 类中的源码片段,可以看出 springBoot 对 Redis 做自动化配置的时候,在容器中注入了 redisTemplate 和 stringRedisTemplate

  • 其中,RedisTemplate<Object, Object> 表示,key 的类型为 Object,value 的类型为 Object,但是我们往往需要的是 RedisTemplate<String, Object>,这就需要我们重新注入一个 RedisTemplate 的 Bean,它的泛型为 RedisTemplate<String, Object>,并设置 key,value 的序列化方式

  • 看到这个@ConditionalOnMissingBean注解后,就知道如果Spring容器中有了RedisTemplate对象了,这个自动配置的RedisTemplate不会实例化。因此我们可以直接自己写个配置类,配置RedisTemplate。

三、注入RedisTemplate

1、引入依赖

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

以上引入了 redis 的依赖,其余依赖请自行添加

2、Redis 连接信息

spring:  # Redis配置  redis:    host: 127.0.0.1    port: 6379    database: 10    jedis:      pool:        # 连接池最大连接数(使用负值表示没有限制)        max-active: 50        # 连接池最大阻塞等待时间(使用负值表示没有限制)        max-wait: 3000ms        # 连接池中的最大空闲连接数        max-idle: 20        # 连接池中的最小空闲连接数        min-idle: 5    # 连接超时时间(毫秒)    timeout: 5000ms

3、Redis 核心配置类

Redis 的核心配置我们放在 RedisConfig.java 文件中

package com.zyxx.redistest.common;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.core.RedisTemplate;import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;import org.springframework.data.redis.serializer.RedisSerializer;import org.springframework.data.redis.serializer.StringRedisSerializer;@Configurationpublic class RedisConfig {        @Bean    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {// 配置redisTemplate        RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();        redisTemplate.setConnectionFactory(redisConnectionFactory);        // 设置序列化        Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);        ObjectMapper om = new ObjectMapper();        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);        om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);        jackson2JsonRedisSerializer.setObjectMapper(om);        // key序列化        redisTemplate.seTKEySerializer(new StringRedisSerializer());        // value序列化        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);        // Hash key序列化        redisTemplate.setHashKeySerializer(new StringRedisSerializer());        // Hash value序列化        redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);        redisTemplate.afterPropertiesSet();        return redisTemplate;    }}

我们注入了一个名称为 redisTemplate,类型为 RedisTemplate<String, Object> 的 Bean,key 采用 StringRedisSerializer 序列化方式,value 采用 Jackson2JsonRedisSerializer 序列化方式

4、Redis工具

我们将对 Redis 进行的一系列操作放在 RedisUtils.java 文件中

package com.zyxx.redistest.common;import lombok.extern.slf4j.Slf4j;import org.apache.commons.lang3.StringUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.stereotype.Component;@Slf4j@Componentpublic class RedisUtils {    @Autowired    private RedisTemplate<String, Object> redisTemplate;        public Object get(final String key) {        if (StringUtils.isBlank(key)) {            return null;        }        try {            return redisTemplate.opsForValue().get(key);        } catch (Exception e) {            e.printStackTrace();        }        return null;    }        public boolean set(final String key, Object value) {        if (StringUtils.isBlank(key)) {            return false;        }        try {            redisTemplate.opsForValue().set(key, value);            log.info("存入redis成功,key:{},value:{}", key, value);            return true;        } catch (Exception e) {            log.error("存入redis失败,key:{},value:{}", key, value);            e.printStackTrace();        }        return false;    }}

我们写入了 get,set 两个方法用于测试

四、测试

1、创建 Java 实体类 UserInfo

package com.zyxx.redistest.common;import lombok.Data;import java.io.Serializable;import java.util.Date;@Datapublic class UserInfo implements Serializable {        private Integer id;        private String name;        private Date createTime;}

2、测试用例

package com.zyxx.redistest;import com.zyxx.redistest.common.RedisUtils;import com.zyxx.redistest.common.UserInfo;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import java.util.Date;@SpringBootTestclass RedisTestApplicationTests {    @Autowired    private RedisUtils redisUtil;    @Test    void contextLoads() {        UserInfo userInfo = new UserInfo();        userInfo.setId(1);        userInfo.setName("jack");        userInfo.setCreateTime(new Date());        // 放入redis        redisUtil.set("user", userInfo);        // 从redis中获取System.out.println("获取到数据:" + redisUtil.get("user"));    }}

我们向 Redis 中存入了一个 key 为 ”user“,value 为 UserInfo 对象的数据,然后再根据 key 获取该数据

3、测试结果

SpringBoot怎么整合Redis实现序列化存储Java对象

可以看出,我们往 Redis 中成功存入 Java 对象数据,并成功获取到了该对象。

以上就是“SpringBoot怎么整合Redis实现序列化存储Java对象”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

--结束END--

本文标题: SpringBoot怎么整合Redis实现序列化存储Java对象

本文链接: https://www.lsjlt.com/news/352842.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringBoot怎么整合Redis实现序列化存储Java对象
    今天小编给大家分享一下SpringBoot怎么整合Redis实现序列化存储Java对象的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2023-07-05
  • SpringBoot整合Redis实现序列化存储Java对象的操作方法
    目录一、背景1、思考2、方案二、源码分析三、注入RedisTemplate1、引入依赖2、Redis 连接信息3、Redis 核心配置类4、Redis工具类四、测试1、创建 Java 实体类 UserInfo2、测试用例...
    99+
    2023-03-23
    SpringBoot整合Redis序列化存储Java对象 SpringBoot整合Redis SpringBoot Redis序列化存储
  • SpringBoot怎么结合Redis实现序列化
    这篇文章主要介绍了SpringBoot怎么结合Redis实现序列化的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot怎么结合Redis实现序列化文章都会有所收获,下面我们一起来看看吧。配置类配置...
    99+
    2023-07-02
  • redis缓存对象如何实现序列化
    Redis缓存对象的序列化可以使用以下方法实现:1. 使用Redis自带的序列化机制:Redis提供了几种默认的序列化方式,包括ra...
    99+
    2023-09-06
    redis
  • Java对象序列化怎么实现
    本篇内容介绍了“Java对象序列化怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!从 Java 类产生 XML 把 Ajax 响应作为...
    99+
    2023-06-03
  • SpringBoot整合Redis将对象写入redis的实现
    目录1、环境搭建 2、代码编写3、测试1、环境搭建 创建一个SpringBoot项目,普通的web项目就可以了,我这里使用的是start.aliyun 引入依赖: (1)...
    99+
    2024-04-02
  • PHP与Redis序列化会话存储怎么实现
    在PHP中,可以使用Redis作为会话存储的后端,以实现会话持久化和共享。为了实现这个目标,可以使用PHP的Redis扩展来连接到R...
    99+
    2024-04-29
    Redis PHP
  • springboot+thymeleaf整合阿里云OOS对象存储图片的实现
    目录1.先引入pom依赖2.编写前端thymleeaf代码tetsfile.html3.service层编写4.controller层编写今天再进行创建项目时想使用阿里云oos进行存...
    99+
    2024-04-02
  • SpringBoot怎么整合Redis将对象写入redis中
    本篇内容主要讲解“SpringBoot怎么整合Redis将对象写入redis中”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot怎么整合Redis将对象写入redis中”吧!1、...
    99+
    2023-06-30
  • Java中怎么实现对象的序列化和反序列化
    这篇文章给大家分享的是有关Java中怎么实现对象的序列化和反序列化的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。引言:序列化是将对象的状态信息转换为可以存储或传输的形式的过程,在...
    99+
    2024-04-02
  • Redis缓存-序列化对象存储乱码问题的解决
    使用Redis缓存对象会出现下图现象: 键值对都是乱码形式。 解决以上问题: 如果是xml配置的 我们直接注入官方给定的keySerializer,valueSerializer,...
    99+
    2024-04-02
  • SpringBoot怎么自定义Redis实现缓存序列化
    本篇内容主要讲解“SpringBoot怎么自定义Redis实现缓存序列化”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot怎么自定义Redis实现缓存序列化”吧!1、自定义Red...
    99+
    2023-07-02
  • java 中Spark中将对象序列化存储到hdfs
    java 中Spark中将对象序列化存储到hdfs摘要: Spark应用中经常会遇到这样一个需求: 需要将JAVA对象序列化并存储到HDFS, 尤其是利用MLlib计算出来的一些模型, 存储到hdfs以便模型可以反复利用. 下面的例子演示了...
    99+
    2023-05-31
    java spark 对象序列化
  • SpringBoot怎么整合Spring Cache实现Redis缓存
    今天小编给大家分享一下SpringBoot怎么整合Spring Cache实现Redis缓存的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下...
    99+
    2023-07-02
  • 使用Redis存储序列化对象有哪些优缺点
    优点: 快速读写:Redis是内存数据库,读写速度非常快。 支持多种数据结构:Redis支持多种数据结构,可以存储各种类型的序列化...
    99+
    2024-04-29
    Redis
  • python对象序列化怎么实现
    Python对象序列化可以通过pickle模块来实现。pickle模块提供了一种简单的持久化Python对象的方法,它将Python...
    99+
    2023-10-26
    python
  • SpringBoot整合阿里云OSS对象存储服务实现文件上传
    目录1. 准备工作: 2. 配置: 3. 详细代码: 4. 测试: 1. 准备工作: 一、首先登录阿里云OSS对象存储控制台创建一个Bucket作为你的存储空间。 二、创建Acce...
    99+
    2024-04-02
  • redis怎么使用hash存储java对象
    你可以使用Redis的Hash数据结构来存储Java对象。在Java中,你可以将对象转换为JSON格式,然后将JSON字符串存储在R...
    99+
    2024-04-09
    redis hash java
  • 如何将复杂对象序列化为Redis可存储的形式
    将复杂对象序列化为Redis可存储的形式可以通过以下几种方法: 使用JSON序列化:将复杂对象转换为JSON字符串,然后将其存储...
    99+
    2024-04-29
    Redis
  • SpringBoot结合Redis实现序列化的方法详解
    目录前言配置类配置 Jackson2JsonRedisSerializer 序列化策略配置  RedisTemplate配置缓存策略测试代码完整代码前言 最近在学...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作