Ejemplo n.º 1
0
        public async Task InvalidateCache(int productId, int userId)
        {
            string key = "user:"******"|product" + "|productId:" + productId;
            await _cacheStorage.DeleteAsync(key);


            // Delete all cache entries for this user
            var invalidateCalls = new List <Task>();
            var keys            = _cacheStorage.ListKeys();

            if (keys != null && keys.Count > 0)
            {
                foreach (var k in keys)
                {
                    var parts = k.Split('|');
                    if (parts != null && parts.Length > 0)
                    {
                        var userPart = parts[0].Split(':');
                        if (userPart != null && userPart.Length > 1)
                        {
                            if (userPart[1] == userId.ToString())
                            {
                                invalidateCalls.Add(_cacheStorage.DeleteAsync(k)); // this deletes all cache entries for this user
                            }
                        }
                    }
                }
            }
            await Task.WhenAll(invalidateCalls);
        }