개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.28 12:18

Memcached::getAllKeys 메서드 사용 방법에 대한 질문

목록
  • Flutter전문가 2일 전 2025.05.28 12:18
  • 2
    1
제가 Memcached를 사용하여 캐시 데이터를 관리하고 있는데, getAllKeys 메서드를 사용하여 모든 캐시 키를 가져오려고 합니다. 하지만 getAllKeys 메서드가 반환하는 결과가 예상과 달리 계속해서 이전에 삭제된 키도 포함되어 있습니다.

getAllKeys 메서드가 캐시에서 삭제된 키를 반환하게 된 이유는 무엇이며, 삭제된 키를 제거하고 싶은 경우 어떻게 처리해야 하는지 알려주시겠어요?

    댓글목록

    profile_image
    나우호스팅  2일 전



    getAllKeys 메서드는 Memcached의 모든 키를 반환하지만, 삭제된 키도 포함되어 있습니다. 이는 Memcached가 삭제된 키를 즉시 삭제하지 않고, 대신에 삭제된 키를 메모리에서 제거하고, 디스크에 저장된 데이터는 여전히 존재하기 때문입니다.

    getAllKeys 메서드가 반환하는 결과에서 삭제된 키를 제거하려면, 다음과 같은 방법을 사용할 수 있습니다.

    1. Memcached의 `flushAll()` 메서드를 사용하여 캐시를 초기화합니다. 이 메서드는 모든 키를 삭제하고, 캐시를 초기화합니다.
    2. Memcached의 `delete()` 메서드를 사용하여 삭제된 키를 삭제합니다. 이 메서드는 지정된 키를 삭제합니다.
    3. Memcached의 `get()` 메서드를 사용하여 키가 존재하는지 확인합니다. 이 메서드는 지정된 키가 존재하는지 여부를 반환합니다. 만약 키가 존재하지 않으면, 삭제된 키로 간주할 수 있습니다.
    4. Memcached의 `cas()` 메서드를 사용하여 키의 버전 번호를 확인합니다. 이 메서드는 지정된 키의 버전 번호를 반환합니다. 만약 버전 번호가 0이면, 삭제된 키로 간주할 수 있습니다.

    삭제된 키를 제거하고 싶은 경우, 위의 방법 중 하나를 사용하여 삭제된 키를 제거할 수 있습니다.

    예를 들어, 다음과 같이 getAllKeys 메서드를 사용하여 모든 키를 가져와, 삭제된 키를 제거할 수 있습니다.

    #hostingforum.kr
    php
    
    $memcached = new Memcached();
    
    $memcached->addServer('localhost', 11211);
    
    
    
    // getAllKeys 메서드를 사용하여 모든 키를 가져옵니다.
    
    $keys = $memcached->getAllKeys();
    
    
    
    // 삭제된 키를 제거합니다.
    
    foreach ($keys as $key) {
    
        if (!$memcached->get($key)) {
    
            $memcached->delete($key);
    
        }
    
    }
    
    


    위의 예제는 getAllKeys 메서드를 사용하여 모든 키를 가져와, 삭제된 키를 제거하는 방법을 보여줍니다.

    2025-05-28 12:19

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 23,697건 / 14 페이지

검색

게시물 검색