복붙노트

[REDIS] StackExchange.Redis와 레디 스의 KEYSPACE 알림

REDIS

StackExchange.Redis와 레디 스의 KEYSPACE 알림

나는 주위를보고했고 나는 StackExchange.Redis 라이브러리를 사용하여 레디 스에 KEYSPACE 알림에 가입을 수행하는 방법을 찾을 수 없습니다입니다.

내가 채널을 사용하여 pubsub을 발견했습니다, 그러나 이것은 더 많은 서비스 버스 같은 일이다 가능한 테스트를 확인 / 특정에 가입하는 것보다 대기하는 키 이벤트를 레디 스.

그것은 StackExchange.Redis를 사용하여이 레디 스 기능을 활용할 수 있습니까?

해결법

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

    1.사용 사례에는 가정이 없다, 이것은 잘 작동합니다 - 정규 가입자 API는 잘 작동합니다.

    사용 사례에는 가정이 없다, 이것은 잘 작동합니다 - 정규 가입자 API는 잘 작동합니다.

    그 사람들이 그것을 복제 할 필요가 없습니다 있도록 keyapace 알림의 구문을 캡슐화하는 - 그러나, 나는이 아마도 API에 도우미 메서드의 혜택을, 그리고 아마도 다른 대리인이 서명 할 수 붙박이 기능이 동의 좀 않습니다. 들어 있다는 : 당신이 그것을 잊어되지 않도록 문제를 기록 좋습니다.

    우선, 그것은 레디 스의 키 스페이스 이벤트가 활성화되어 있는지 확인하는 것이 중요합니다. 예를 들어, 이벤트 유형 세트의 키를 사용하도록 설정해야합니다. 이것은 구성 SET 명령을 사용하여 수행 할 수 있습니다 :

    CONFIG SET notify-keyspace-events KEs
    

    키 스페이스 이벤트가 활성화되면, 그냥 술집 서브 채널에 가입에 관하여 :

    using (ConnectionMultiplexer connection = ConnectionMultiplexer.Connect("localhost"))
    {
        IDatabase db = connection.GetDatabase();
        ISubscriber subscriber = connection.GetSubscriber();
    
        subscriber.Subscribe("__keyspace@0__:*", (channel, value) =>
            {
                if ((string)channel == "__keyspace@0__:users" && (string)value == "sadd")
                {
                    // Do stuff if some item is added to a hypothethical "users" set in Redis
                }
            }
        );
    }
    

    여기에 키 스페이스 이벤트에 대해 자세히 알아보기.

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

    2.그냥 선택한 답변이 이미 설명 무엇 연장 :

    그냥 선택한 답변이 이미 설명 무엇 연장 :

    using (ConnectionMultiplexer connection = ConnectionMultiplexer.Connect("localhost"))
    {
        IDatabase db = connection.GetDatabase();
        ISubscriber subscriber = connection.GetSubscriber();
    
        subscriber.Subscribe($"__keyspace@0__:{channel}", (channel, value) =>
            {
              // Do whatever channel specific handling you need to do here, in my case I used exact Key name that I wanted expiration event for.  
            }
        );
    }
    

    또 다른 중요한 것은, 내가 KEX 가입했다 (CONFIG SET는 통지 - 키 스페이스 - 이벤트 KEX )가 만료 알림 채널을 기반으로 업데이트를 얻을 수 있습니다.

  3. from https://stackoverflow.com/questions/23180765/redis-keyspace-notifications-with-stackexchange-redis by cc-by-sa and MIT license