0

I have different models keys in redis.

I used these templates to store the values;

public RedisTemplate<String, Model1> model1RedisTemplate() {
        RedisTemplate<String, Model1> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(connectionFactory());
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(Model1.class));
        return redisTemplate;
    }

public RedisTemplate<String, Model2> model2RedisTemplate() {
        RedisTemplate<String, Model2> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(connectionFactory());
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(Model2.class));
        return redisTemplate;
    }

This is how I stored the values :

model1RedisTemplate.opsForValue().set(model1.getId(), model1);
model2RedisTemplate.opsForValue().set(model2.getId(), model2);

Now I want to iterate all raw values as String using one redis template like RedisTemplate<String,String> redisTemplateForAllValues;

How can I do that?

sam
  • 1,073
  • 4
  • 13
  • 27

1 Answers1

1

there is no native method to get all values from Redis with redisTemplate

but you can get with the following method:

public List<String> getAllValues(){
   Set<String> keys = redisTemplate.keys("*");// you can use any specific pattern of key
   return redisTemplate.opsForValue().multiGet(keys);
}
Devratna
  • 938
  • 1
  • 7
  • 26