11시 config든, 어떤 방식으로든 데이터 추가 (자동화) redis 공식 문서

CommandLineRunner 인터페이스를 구현한 클래스에 @Component 어노테이션을 선언해두면 컴포넌트 스캔이 되고 구동 시점에 run 메소드의 코드가 실행된다.

@Component
public class DummyDataInitializer implements CommandLineRunner {

    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    @Override
    public void run(String... args) throws Exception {
        for (int i = 1; i <= 10000; i++) {
            String key = "dummyKey" + i + "1";
            String value = "1";

            // Set the key-value pair in Redis
            redisTemplate.opsForValue().set(key, value);

            // Set the TTL (Time-To-Live) for 5 minutes
            redisTemplate.expire(key, 5, TimeUnit.MINUTES);
        }
    }
}
public void initializeData() {
        // 여기에서 원하는 초기 데이터를 Redis에 삽입
        //redisCacheService.setWithExpiration("key1", "value1");

        for (int i = 0; i < 70000; i++) {
            String key = "dummyKey" + i;
            String value = "dummyValue" + i;

            // Adjust the expiration time as needed
            redisCacheService.setWithExpiration(key, value, 10L);
        }
    }
}
  1. Redis는 mass insert라는 api를 제공해서 데이터를 빠르게 넣을 수 있다
  2. reference를 보면 Jedis와 Lettuce 두 가지 방법의 더미 데이터 생성이 있다
   	@Bean
    public ZSetOperations<String, String> zSetOperations(RedisTemplate<String, String> redisTemplate) {
        return redisTemplate.opsForZSet();
    }

    @Bean
    public void populateDummyData(RedisTemplate<String, String> redisTemplate, ZSetOperations<String, String> zSetOperations) {
        String KEY_PREFIX = "product"; // Adjust the key prefix based on your needs

        for (int i = 1; i <= 7000000; i++) {
            String productName = KEY_PREFIX + i;

            HashMap<String, String> hashMap = new HashMap<>();
            hashMap.put("name", productName);
            hashMap.put("score", String.valueOf(i * (int) (Math.random() * 100) + 1));

            zSetOperations.add(KEY_PREFIX, productName, Double.parseDouble(hashMap.get("score")));
            redisTemplate.opsForHash().putAll(productName, hashMap);
        }
    }

https://www.figma.com/embed?embed_host=notion&url=https%3A%2F%2Fwww.figma.com%2Ffile%2FELYYlf6BuEJ5nbziPKqwP6%2F시놀%3Ftype%3Ddesign%26node-id%3D0%3A1%26mode%3Ddesign%26t%3D6DCE7T4sEta3Y75z-1


@Mia

<aside> 💡 피드백

  1. 대상 및 목적
  2. 내용 수준
  3. 표현 수준

Reference

[Redis] Jedis를 활용한 Redis Dummy Data 넣기