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);
}
}
}
@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> 💡 피드백
이거 모르겠어요!
하면 내용 추가하기[Redis] Jedis를 활용한 Redis Dummy Data 넣기