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); }; }
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(); } } }
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); }; }
public ClientSideCachingContext(RedisClient cli, IPubSubSubscriber sub) { _cli = cli; _sub = sub; }