2014-11-13 1 views
1

ServiceStack.Redis를 사용하여 .Net 응용 프로그램의 키 공간 알림에 액세스하려고합니다. 나는 레디 스가 처음이다. ServiceStack.redis를 사용하여 키 공간 알림에 액세스하는 방법

나는 명령에 의해 캐시에 이벤트 알림을 활성화 : 닷넷 : 나는 채널 "* 키 *"에 가입하고

CONFIG SET notify-keyspace-events KEs 

. 다음은 내 코드입니다.

const string ChannelName = "__key*__:*"; 
    using (var redisConsumer = new RedisClient("localhost:6379")) 
    using (var subscription = redisConsumer.CreateSubscription()) 
    { 
     subscription.OnSubscribe = channel => 
     { 
      Console.WriteLine(String.Format("Subscribed to '{0}'", channel)); 
     }; 
     subscription.OnUnSubscribe = channel => 
     { 
      Console.WriteLine(String.Format("UnSubscribed from '{0}'", channel)); 
     }; 
     subscription.OnMessage = (channel, msg) => 
     { 
      Console.WriteLine(String.Format("Received '{0}' from channel '{1}'", 
       msg, channel)); 
     };    

     Console.WriteLine(String.Format("Started Listening On '{0}'", ChannelName)); 
     subscription.SubscribeToChannels(ChannelName); //blocking 
    } 

다른 .Net 응용 프로그램에서 캐시에 새 데이터를 추가합니다. OnMessage에서 이벤트를받을 것으로 예상됩니다. 응용 프로그램은 캐시에 새 항목을 추가 할 때 이벤트를 캡처하지 않습니다.

그러나 "psubscribe '키 * : *'"명령을 redis-cli.exe에 실행하면 이벤트가 올바르게 캡처됩니다. 캐시에 새 항목을 추가하면 콘솔 세부 정보가 콘솔 창에 표시됩니다.

내 응용 프로그램에서 동일한 항목을 캡처 할 수 없습니다. 내가 여기서 아무것도 놓치고 있니?

답변

1

사용 subscription.SubscribeToChannelsMatching(ChannelName);

관련 문제