복붙노트

[REDIS] 레디 스 KEYSPACE 알림 flushdb와

REDIS

레디 스 KEYSPACE 알림 flushdb와

키 스페이스 알림 봤는데 최근 웹 API에 대한 필수왔다 개발 중.

우리는 푸른에서 레디 스 설정을 가지고있다. API는 주로 우리가 메모리 캐시의 요구에 데이터를 업데이트 할 수 있는지 알아 내기 위해 알림을 사용하여 작동합니다.

지금, 우리는 레디 스 데이터베이스가 플러시 경우 로컬 메모리 캐시를 지우려면 플러시 이벤트를 통지 처리합니다. 그러나 우리는 KEYSPACE 통지로 flushdb 이벤트를 얻을 수 없습니다. 그리고 키 스페이스 이벤트는 "AKE"로 가능하다. "AKE"문자열 수단 모든 이벤트.

PS : 우리는 같은 '설정'이벤트와 알림을 얻을 수있는 '__keyevent @ 2 __ : 세트'

구독 코드는 다음과 같다.

 subscriber.Subscribe(
            "*",
            (channel, value) =>
            {
                // Some codes here
            });

해결법

  1. ==============================

    1.다른 대답이 언급 한 바와 같이 단지, 그러한 통지가 없습니다.

    다른 대답이 언급 한 바와 같이 단지, 그러한 통지가 없습니다.

    결국, KEYSPACE 알림 단일 키에 이벤트에 대한 알림입니다. 각 통지는 키와 연결되어 있습니다. 키 스페이스 이벤트의 경우, 키 이름은 채널 이름의 일부입니다. KeyEvent를 이벤트의 경우, 키 이름은 메시지입니다.

    PUBLISH __keyspace@0__:key_name comamnd
    PUBLISH __keyevent@0__:command key_name
    

    각 명령은 통지를 보내는 것은 인수로 키가 있어야합니다. 예를 들면 델 키 설정 키의 발. 그러나, flushdb 명령은 인수로 더 키가 없습니다. 이 명령은 하나의 키에 영향을주지 않습니다. 대신, 데이터베이스에있는 모든 키를 제거합니다. 그래서 그것에 대한 그러한 통지가 없습니다. 그렇지 않으면, 당신은 채널에서 무엇을 기대 하는가? 제거 된 모든 키? 그것은 좋은 생각이 아니다.

    그러나 flushdb에 대한 이벤트를 시뮬레이션 할 수 있습니다

    이러한 방법으로, 당신은 시뮬레이션 flushdb 통지를 얻을 수 있습니다.

  2. ==============================

    2.레디 스 문서에 따르면, Flushdb에 대한 알림이 없습니다.

    레디 스 문서에 따르면, Flushdb에 대한 알림이 없습니다.

  3. ==============================

    3.난 당신이 몇 가지 옵션을 가지고 생각합니다.

    난 당신이 몇 가지 옵션을 가지고 생각합니다.

  4. from https://stackoverflow.com/questions/40278931/redis-keyspace-notifications-with-flushdb by cc-by-sa and MIT license