Redis는 값이 문자열 인 키 - 값 저장소로 직접 사용할 수 있습니다. 또는 더 복잡한 방법으로 값은 해시 또는 목록과 같은 데이터 구조가 될 수 있습니다. 두 번째 경우가 있고 키 "H"아래에 있다고 가정하면 해시가 있습니다. 항목을 해시에 추가하고 제거 할 수 있습니다. 결국 해시는 비어있을 수 있으며 다시 채울 수 있습니다.Redis에서 빈 데이터 키 유지
데이터 구조에서 마지막 항목 인 해시 "H"를 제거하면 Redis가 어떤 이유로 든 현재 키에서 제거합니다.
예 :
HSET "H" "key1" "value1"
HSET "H" "key2" "value2"
HDEL "H" "key1"
<-- Here, "H" is in the list of current keys, whereby HLEN returns 1
HDEL "H" "key2"
<-- Here, for some reason, "H" is not shown among existing keys,
not even as an empty hash (HLEN 0)
HSET "H" "key3" "value3"
<-- Hash is back in the list of keys
내 질문은 : 그것은 여전히 지정된 키 ("H"의 (우리의 예를 빈 해시) 값을 보여주는 유지 않도록하는 것이 가능에, 레디 스를 구성하는 것입니다 우리의 예) 비 단순한 빈 데이터 구조로?
내가 원하는 것은 Redis에서 다양한 해시의 길이를 모니터링하는 것입니다. statsd를 사용하고 있지만 문제가되지 않습니다. 요점은 각 분마다, 기존의 모든 Redis 구조 (해시)를 statsd에 덤프하는 것입니다. 해시의 이름은 동적입니다. 그래서 그 이름을 열거 할 수 없습니다. 나는 "KEYS hash - *"를 실행하고 이것들을 반복 할 필요가있다. 그러나 해시가 사라진 경우 statsd에 마지막으로 0이 아닌 값이 있지만 0으로 대체해야합니다. 즉, 빈 해시의 길이는 0입니다. –
직접 명령을 수행 할 수있는 명령은 없지만 사용자는이를 수행 할 수 있습니다. 우선 KEYS 사용을 중단하십시오. 매우 비효율적입니다. redis 2.8부터는 동적 키를 처리해야하는 사용자를 위해 훨씬 효율적이고 특별히 설계된 SCAN을 사용할 수 있습니다. –
방금 제안 된 솔루션을 포함하도록 내 대답이 향상되었습니다. –