Java教程

JAVA 版 电子商务微服式务分布云构架-SpringBoot整合RedisTemplate 模版操作

本文主要是介绍JAVA 版 电子商务微服式务分布云构架-SpringBoot整合RedisTemplate 模版操作,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

虽然上一文章的代码实现了 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 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 + "]";
    }
}

此时可以进行对象的序列化保存处理, 这样整体的数据存储的手段可以更加的丰富。

点击查看更多内容
这篇关于JAVA 版 电子商务微服式务分布云构架-SpringBoot整合RedisTemplate 模版操作的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!