示例#1
0
 public void Start()
 {
     _sub = _cli.Subscribe("__redis__:invalidate", InValidate) as IPubSubSubscriber;
     _cli.Interceptors.Add(() => new MemoryCacheAop(this));
     _cli.Unavailable += (_, e) =>
     {
         lock (_dictLock) _dictSort.Clear();
         _dict.Clear();
     };
     _cli.Connected += (_, e) =>
     {
         e.Client.ClientTracking(true, _sub.RedisSocket.ClientId, null, false, false, false, false);
     };
 }
示例#2
0
        public void Subscribe(string[] channels)
        {
            var callback = _mySubscriberCallback = OperationContext.Current.GetCallbackChannel <IPubSubSubscriber>();

            lock (_syncLock)
            {
                if (!_callbackChannels.ContainsKey(callback))
                {
                    // empty is subscribe all
                    var channelList = new List <string>();
                    channelList.AddRange(channels);
                    _callbackChannels.TryAdd(callback, channelList);
                    ConsoleExtension.WriteAdd();
                }
            }
        }
示例#3
0
 public void Start()
 {
     _sub = _cli.Subscribe("__redis__:invalidate", InValidate) as IPubSubSubscriber;
     _cli.Interceptors.Add(() => new MemoryCacheAop(this));
     _cli.Unavailable += (_, e) =>
     {
         lock (_dictLock) _dictSort.Clear();
         _dict.Clear();
         lock (_clusterTrackingsLock)
         {
             if (_clusterTrackings.TryGetValue(e.Pool.Key, out var localTracking))
             {
                 _clusterTrackings.Remove(e.Pool.Key);
                 localTracking.Client.Dispose();
             }
         }
     };
     _cli.Connected += (_, e) =>
     {
         var redirectId = GetOrAddClusterTrackingRedirectId(e.Host, e.Pool);
         e.Client.ClientTracking(true, redirectId, null, false, false, false, false);
     };
 }
示例#4
0
 public ClientSideCachingContext(RedisClient cli, IPubSubSubscriber sub)
 {
     _cli = cli;
     _sub = sub;
 }