在升级redis的时候,遇到了一个问题,也是老生常谈的问题:
参考文章:spring data redis serializer SerializationException 序列化问题

解决办法:

整段redis配置代码块如下:
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package com.nuanshui.heatedloan.middleware.config;
import com.nuanshui.framework.message.redis.RedisPublisher;
import com.nuanshui.framework.message.redis.RedisSubscriber;
import com.nuanshui.framework.utils.redis.JedisUtil;
import com.nuanshui.framework.utils.redis.MasterSlavePool;
import com.nuanshui.heatedloan.dubbo.extension.cache.manager.DistributedCacheDecorator;
import com.nuanshui.heatedloan.dubbo.extension.cache.manager.DubboCacheJsonManagerImpl;
import com.nuanshui.heatedloan.middleware.cache.FastJsonRedisSerializer;
import com.nuanshui.heatedloan.middleware.cache.manager.impl.CacheManagerJsonImpl;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import redis.clients.jedis.JedisPoolConfig;
public class RedisConfig {
@Value("${redis.master.host}")
private String host;
@Value("${redis.master.port}")
private int port;
@Value("${redis.timeout}")
private int timeout;
@Value("${redis.database}")
private int database;
@Value("${masterReadPercent}")
private int masterReadPercent;
@Value("${redis.password}")
private String password;
public RedisConfig() {
}
@Bean({"jedisPoolConfig"})
public JedisPoolConfig jedisPoolConfig() {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(1000);
jedisPoolConfig.setMaxIdle(100);
jedisPoolConfig.setMaxWaitMillis(5000L);
jedisPoolConfig.setTestOnBorrow(true);
return jedisPoolConfig;
}
@Bean({"jedisPool"})
public MasterSlavePool masterSlavePool(JedisPoolConfig jedisPoolConfig) throws Exception {
MasterSlavePool masterSlavePool = new MasterSlavePool(jedisPoolConfig, this.host, this.port, this.timeout, this.database);
masterSlavePool.setPassword(this.password);
masterSlavePool.setMasterReadPercent(this.masterReadPercent);
masterSlavePool.setRedisName("cache");
return masterSlavePool;
}
@Bean({"jedisUtil"})
public JedisUtil jedisUtil(MasterSlavePool masterSlavePool) {
JedisUtil jedisUtil = new JedisUtil();
jedisUtil.setJedisPool(masterSlavePool);
return jedisUtil;
}
@Bean({"dubboCacheManager"})
public DubboCacheJsonManagerImpl dubboCacheManager() {
DubboCacheJsonManagerImpl dubboCacheJsonManager = new DubboCacheJsonManagerImpl();
return dubboCacheJsonManager;
}
@Bean({"cacheManagerJsonImpl"})
public CacheManagerJsonImpl cacheManagerJsonImpl() {
CacheManagerJsonImpl cacheManagerJsonImpl = new CacheManagerJsonImpl();
return cacheManagerJsonImpl;
}
@Bean({"redisConnectionFactory"})
public JedisConnectionFactory redisConnectionFactory(JedisPoolConfig jedisPoolConfig) {
JedisConnectionFactory factory = new JedisConnectionFactory();
factory.setHostName(this.host);
factory.setPort(this.port);
factory.setPassword(this.password);
factory.setDatabase(this.database);
factory.setPoolConfig(jedisPoolConfig);
factory.setUsePool(true);
return factory;
}
@Bean({"keyRedisSerializer"})
public StringRedisSerializer keyRedisSerializer() {
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
return stringRedisSerializer;
}
@Bean({"valueRedisSerializer"})
public FastJsonRedisSerializer valueRedisSerializer() {
FastJsonRedisSerializer valueRedisSerializer = new FastJsonRedisSerializer();
return valueRedisSerializer;
}
@Bean({"redisTemplate"})
public RedisTemplate redisTemplate(JedisConnectionFactory factory) {
RedisTemplate redisTemplate = new RedisTemplate();
redisTemplate.setConnectionFactory(factory);
redisTemplate.setKeySerializer(this.keyRedisSerializer());
redisTemplate.setHashKeySerializer(this.keyRedisSerializer());
redisTemplate.setHashValueSerializer(this.valueRedisSerializer());
redisTemplate.setValueSerializer(this.valueRedisSerializer());
return redisTemplate;
}
@Bean({"subscriptionExecutor"})
public ThreadPoolTaskExecutor subscriptionExecutor() {
ThreadPoolTaskExecutor subscriptionExecutor = new ThreadPoolTaskExecutor();
subscriptionExecutor.setThreadNamePrefix("redis-subscription-thread-");
return subscriptionExecutor;
}
@Bean({"redisTaskExecutor"})
public ThreadPoolTaskExecutor redisTaskExecutor() {
ThreadPoolTaskExecutor redisTaskExecutor = new ThreadPoolTaskExecutor();
redisTaskExecutor.setThreadNamePrefix("redis-task-thread-");
return redisTaskExecutor;
}
@Bean({"redisMessageListenerContainer"})
public RedisMessageListenerContainer redisMessageListenerContainer(JedisConnectionFactory factory, ThreadPoolTaskExecutor subscriptionExecutor, ThreadPoolTaskExecutor redisTaskExecutor) {
RedisMessageListenerContainer redisMessageListenerContainer = new RedisMessageListenerContainer();
redisMessageListenerContainer.setConnectionFactory(factory);
redisMessageListenerContainer.setSubscriptionExecutor(subscriptionExecutor);
redisMessageListenerContainer.setTaskExecutor(redisTaskExecutor);
return redisMessageListenerContainer;
}
@Bean({"publisher"})
public RedisPublisher publisher(RedisTemplate redisTemplate) {
RedisPublisher publisher = new RedisPublisher();
publisher.setRedisTemplate(redisTemplate);
return publisher;
}
@Bean({"subscriber"})
public RedisSubscriber subscriber(RedisTemplate redisTemplate, RedisMessageListenerContainer redisMessageListenerContainer) {
RedisSubscriber redisSubscriber = new RedisSubscriber();
redisSubscriber.setRedisTemplate(redisTemplate);
redisSubscriber.setMessageListenerContainer(redisMessageListenerContainer);
return redisSubscriber;
}
@Bean({"distributedCacheDecorator"})
public DistributedCacheDecorator distributedCacheDecorator(RedisPublisher publisher, RedisSubscriber subscriber) {
DistributedCacheDecorator distributedCacheDecorator = new DistributedCacheDecorator();
distributedCacheDecorator.setPublisher(publisher);
distributedCacheDecorator.setSubscriber(subscriber);
return distributedCacheDecorator;
}
}
网友评论