Exemplo n.º 1
0
        internal void SetItem <TValue>(CacheItem <TValue> cacheItem)
        {
            TimeSpan?expiry = null;

            if (cacheItem.ExpireIn.HasValue)
            {
                expiry = cacheItem.ExpireIn;
            }

            client.Database.StringSet(cacheItem.Id, convert.ToRedis(cacheItem), expiry, When.Always, CommandFlags.None);
        }
Exemplo n.º 2
0
        public void Publish(string cacheName, string key, CacheItemActionTypes action)
        {
            var message       = new CacheItemNotification(sender, cacheName, key, action);
            var messageToSend = convert.ToRedis(message);

            GetSubClient(cacheName, null).Subscriber.Publish(cacheName, messageToSend, CommandFlags.None);
        }
Exemplo n.º 3
0
        public void Publish(string key, CacheItemActionTypes action)
        {
            var message       = new CacheItemNotification(sender, cacheName, key, action);
            var messageToSend = convert.ToRedis(message);

            // publish via redis
            client.Subscriber.Publish(cacheName, messageToSend, CommandFlags.FireAndForget);
        }
Exemplo n.º 4
0
        internal void SetItem <TValue>(CacheItem <TValue> cacheItem)
        {
            TimeSpan?expiry = null;

            if (cacheItem.ExpireIn.HasValue)
            {
                expiry = cacheItem.ExpireIn;

                if (expiry.Value.TotalSeconds <= 0)
                {
                    client.Database.KeyDelete(cacheItem.Id, CommandFlags.None);
                    return;
                }
            }

            client.Database.StringSet(cacheItem.Id, convert.ToRedis(cacheItem), expiry, When.Always, CommandFlags.None);
        }
Exemplo n.º 5
0
 public bool TryPublish(string cacheName, string key, CacheItemActionTypes action)
 {
     try
     {
         var message       = new CacheItemNotification(sender, cacheName, key, action);
         var messageToSend = convert.ToRedis(message);
         var redisClient   = GetSubClient(cacheName, null, null);
         if (redisClient.IsConnected)
         {
             redisClient.Subscriber.Publish(cacheName, messageToSend, CommandFlags.None);
             return(true);
         }
         return(false);
     }
     catch (Exception ex)
     {
         log.Warn(ex, $"Failed to publish {action} for {cacheName}.{key}");
         return(false);
     }
 }