Redis Cluster

Redis Cluster는 hash slot 이라는 알고리즘을 사용하여 데이터를 분산하여 저장

Reference

Redis - Cluster - hash slot 알아보기


Spring Data Redis에서 O(N) 명령어인 Keys vs Scan

찾아보던 중 RedisTemplate.Keys를 통해 개발 특정 문자열을 포함한 키를 전부 삭제할 수 있었다.

@Transactional
    public void deleteDataContainingString(String searchString) {
        Set<String> keys = redisTemplate.keys("*" + searchString + "*");

        if (keys != null && !keys.isEmpty()) {
            redisTemplate.delete(keys);
            System.out.println("문자열이 포함된 키 전부 삭제 : " + searchString);
        } else {
            System.out.println("문자열을 포함한 데이터 없음 : " + searchString);
        }
    }

Untitled

데이터 5만개를 조회하고 삭제하는데

Untitled

200ms 정도 걸렸다.

하지만 Redis는 싱글 스레드로 작동하므로 O(N)은 피해야 한다.

Scan이라는 명령어를 사용하면 된다.

Reference

Spring Data Redis에서 O(N) 명령어인 Keys를 Scan으로 대체하기