Search code examples
javaspringspring-bootspring-data-redis

RedisTemplate Spring boot


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


Solution

  • Everything worked for me when I changed the connection to the redis from JedisConnectionFactory to LettuceConnectionFactory

    @Bean
        public LettuceConnectionFactory redisStandAloneConnectionFactory() {
            return new LettuceConnectionFactory(new RedisStandaloneConfiguration("127.0.0.1", 6379));
        }