Redis 使用 fst 进行序列化

烈酒焚心 提交于 2019-12-26 19:07:30

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

添加 maven 依赖

<!-- redis serializer -->
<dependency>
    <groupId>de.ruedigermoeller</groupId>
    <artifactId>fst</artifactId>
    <version>2.57</version>
</dependency>

实现 RedisSerializer 接口 

public class FSTSerializer implements RedisSerializer<Object> {

    private FSTConfiguration fstConfiguration ;

    public FSTSerializer() {
        fstConfiguration = FSTConfiguration.getDefaultConfiguration();
        fstConfiguration.setClassLoader(Thread.currentThread().getContextClassLoader());
    }

    @Override
    public byte[] serialize(Object obj) {
        if (ObjectUtil.isEmpty(obj)) {
            return null;
        }
        return fstConfiguration.asByteArray(obj);
    }

    @Override
    public Object deserialize(byte[] bytes) {
        if (ObjectUtil.isEmpty(bytes)) {
            return null;
        }
        return fstConfiguration.asObject(bytes);
    }
}

定义一个 bean

@Bean
public RedisTemplate<String, Object> customRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
    RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
    redisTemplate.setConnectionFactory(redisConnectionFactory);
    redisTemplate.setKeySerializer(new StringRedisSerializer());
    redisTemplate.setValueSerializer(new FSTSerializer());
    return redisTemplate;
}

然后就可以使用了

@Autowired
private RedisTemplate<String, Object> myRedisTemplate;

myRedisTemplate.opsForValue().get("hello");

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!