虽然上一文章的代码实现了 Redis 基础的数据操作,但是遗憾的是在 Java 开发领域内必须要考虑一个实际的问题,那么就是对象 的序列化保存问题,毕竟 Redis 数据库的读写速度是非常快的,但是如果不能够进行对象的存储,这样的存储意义就不大了,这样 就需要准备一个对象的序列化处理程序类,通过对象的形式进行数据的存储。
了解springcloud架构可以加求求:三五三六二四七二五九
1、 如果要想进行 Redis 对象序列化操作则一定要首先准备一个序列化处理程序类,这个程序类有实现要求:
import org.springframework.core.serializer.support.DeserializingConverter; import org.springframework.core.serializer.support.SerializingConverter; import org.springframework.data.redis.serializer.RedisSerializer; import org.springframework.data.redis.serializer.SerializationException; // 此时定义的序列化操作表示可以序列化所有类的对象,当然,这个对象所在的类一定要实现序列化接口 public class RedisObjectSerializer implements RedisSerializer<Object> { // 为了方便进行对象与字节数组的转换,所以应该首先准备出两个转换器 private Converter<Object, byte[]> serializingConverter = new SerializingConverter(); private Converter<byte[], Object> deserializingConverter = new DeserializingConverter(); private static final byte[] EMPTY_BYTE_ARRAY = new byte[]; // 做一个空数组,不是null @Override public byte[] serialize(Object obj) throws SerializationException { if (obj == null) { // 这个时候没有要序列化的对象出现,所以返回的字节数组应该就是一个空数组 return EMPTY_BYTE_ARRAY ; } return this.serializingConverter.convert(obj); // 将对象变为字节数组 } @Override public Object deserialize(byte[] data) throws SerializationException { if (data == null || data.length == ) { // 此时没有对象的内容信息 return null ; } return this.deserializingConverter.convert(data); } }
2、 此时如果要想让 RedisTemplate 操作模版知道有这样一个序列化程序类存在,那么就不能够采用 RedisTemplate 默认配置形式, 需要准备一个单独的配置类进行处理:
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.StringRedisSerializer; import cn.study.microboot.util.redis.RedisObjectSerializer; @Configuration public class RedisConfig { @Bean public RedisTemplate<String, Object> getRedisTemplate( RedisConnectionFactory factory) { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>(); redisTemplate.setConnectionFactory(factory); redisTemplate.setKeySerializer(new StringRedisSerializer()); // key的序列化类型 redisTemplate.setValueSerializer(new RedisObjectSerializer()); // value的序列化类型 return redisTemplate; } }
3、 进行程序的测试使用:
import java.io.Serializable; @SuppressWarnings("serial") public class Member implements Serializable { private String mid; private Integer age; public String getMid() { return mid; } public void setMid(String mid) { this.mid = mid; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "Member [mid=" + mid + ", age=" + age + "]"; } }
import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.web.WebAppConfiguration; import cn.mldn.microboot.vo.Member; @SpringBootTest(classes = StartSpringBootMain.class) @RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration public class TestRedis { @Resource private RedisTemplate<String, Object> redisTemplate; @Test public void testGet() { System.out.println(this.redisTemplate.opsForValue().get("study")); } @Test public void testSet() { Member vo = new Member() ; vo.setMid("studyjava"); vo.setAge(19); this.redisTemplate.opsForValue().set("study", vo);; } }
此时可以进行对象的序列化保存处理, 这样整体的数据存储的手段可以更加的丰富
相关推荐
Java开发案例-springboot-02-整合Redis-源代码+文档.rar Java开发案例-springboot-02-整合Redis-源代码+文档.rar Java开发案例-springboot-02-整合Redis-源代码+文档.rar Java开发案例-springboot-02-整合Redis-源...
docker-compose启动springboot项目-springboot+redis实战案例。可以参考文章:https://blog.csdn.net/Ber_Bai/article/details/119995240
springboot整合redis.算是比较全面的一种整合方式了. springboot整合redis.算是比较全面的一种整合方式了.
springboot整合redis集群(三种方式)源码
首先,让我们来看看"Springboot整合Redis集群,零配置方式"。在Spring Boot中,我们可以通过引入`spring-boot-starter-data-redis`依赖来启用Redis支持。但是,要配置Redis集群,通常需要设置多个节点地址、密码、...
标题 "shiro-freemarker-springBoot-redis-mysql" 涉及到的是一个基于JavaWeb技术栈的应用开发项目,主要集成了Apache Shiro、FreeMarker模板引擎、Spring Boot框架以及Redis和MySQL数据库。下面将分别详细介绍这些...
springboot整合redis动态切换每个数据库,
将SpringBoot与Redis和MyBatis整合,可以构建出高效、可维护的后端服务。下面我们将详细探讨这些知识点。 **SpringBoot整合Redis** 1. **配置Redis**: 在SpringBoot项目中,可以通过`application.properties`或`...
标题 "springboot+redis+mybati-springboot-redis-mybatis-swagger.zip" 暗示了这个项目是基于Spring Boot、Redis、MyBatis和Swagger构建的一个整合应用。让我们详细了解一下这些技术及其在实际开发中的应用。 1. *...
本项目“Redission分布式锁-本地单机Redis实战-springboot-redis-lock”旨在教你如何在SpringBoot项目中集成Redisson库,实现基于Redis的分布式锁功能。下面我们将深入探讨相关的知识点。 1. **Redisson**:...
- 数据序列化:根据业务需求选择合适的序列化方式,例如JSON、JDK序列化等,以确保数据在Redis和Java对象之间的正确转换。 - 键空间设计:合理设计键的命名规则,避免键冲突,同时便于管理和查找。 - 过期策略:...
【微服务SpringBoot整合Redis基于Redis的Stream消息队列实现异步秒杀下单】这篇文章主要讲解了如何在微服务架构中使用SpringBoot整合Redis来构建一个基于Redis Stream的消息队列,以此来实现实时、高效的异步秒杀...
Java开发案例-springboot-29-整合ShedLock实现分布式定时任务(redis版)-源代码+文档.rar Java开发案例-springboot-29-整合ShedLock实现分布式定时任务(redis版)-源代码+文档.rar Java开发案例-springboot-29-整合...
标题 "07-springboot-redis-idempotent.zip" 暗示了这是一个关于Spring Boot集成Redis实现幂等性的教程。在分布式系统中,幂等性是一个关键概念,确保同一个请求无论执行多少次,结果始终相同,这对于防止重复操作、...
标题 "springboot_redis" 涉及的是Spring Boot与Redis集成的应用。Spring Boot是Spring框架的一个简化版,它旨在简化创建独立的、生产级别的基于Spring的应用程序。而Redis是一款高性能的键值对数据库,常被用作缓存...
**SpringBoot整合Redis详解** SpringBoot是一款由Pivotal团队提供的全新框架,它极大地简化了Spring应用的初始搭建以及开发过程。而Redis是一款高性能的键值对存储系统,常用于缓存、消息队列等场景。SpringBoot与...
4. **Redis 配置**:`RedisConfig.java`,配置 Redis 连接池及序列化方式。 5. **MyBatis 配置**:`MybatisConfig.java`,包含 MyBatis 的配置,如 SqlSessionFactory 的创建。 6. **Mapper 接口和 XML 文件**:定义...
赠送jar包:spring-data-redis-2.3.9.RELEASE.jar; 赠送原API文档:spring-data-redis-2.3.9.RELEASE-javadoc.jar; 赠送源代码:spring-data-redis-2.3.9.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-...
整合Redis,自定义序列化方式