I am going to store my token in redis
RedisConfig
@Configuration
@EnableCaching
public class RedisConfig {
@Bean
public JedisConnectionFactory jedisConnectionFactory() {
RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
redisStandaloneConfiguration.setHostName("127.0.0.1");
redisStandaloneConfiguration.setPort(6379);
JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(redisStandaloneConfiguration);
return jedisConnectionFactory;
}
@Bean
public RedisTemplate<String, String> redisTemplate() {
RedisTemplate<String, String> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(jedisConnectionFactory());
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashKeySerializer(new JdkSerializationRedisSerializer());
redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());
redisTemplate.setEnableTransactionSupport(true);
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
}
Service
final var st =AuthenticationSuccessDto
.builder()
.accessToken(jwtUtils.generateAccessToken(user))
.refreshToken(jwtUtils.generateRefreshToken(user))
.tokenType("Bearer")
.user(user)
.expiresIn(TimeUnit.SECONDS.toSeconds(60)).build();
try {
redisTemplate.opsForHash().put(KEY,"1",st.getAccessToken());
} catch (Exception e) {
e.printStackTrace();
throw new Exception();
}
return st;
}
throws an exception java.lang.NoSuchMethodError: ‘long redis.clients.jedis.Jedis.hset(byte[], byte[], byte[])’
I need to convert string to bytes?
help plz
2
Answers
Everything worked for me when I changed the connection to the redis from JedisConnectionFactory to LettuceConnectionFactory
You can also have Spring Boot automatically generate the connection to Redis based on your .yml or a .properties file. You just need to add the following to your application.yml: