diff --git a/src/Orchard.Web/Modules/Orchard.Caching/Services/ICacheStorageProvider.cs b/src/Orchard.Web/Modules/Orchard.Caching/Services/ICacheStorageProvider.cs index 4be4dc974..200f001fc 100644 --- a/src/Orchard.Web/Modules/Orchard.Caching/Services/ICacheStorageProvider.cs +++ b/src/Orchard.Web/Modules/Orchard.Caching/Services/ICacheStorageProvider.cs @@ -8,4 +8,8 @@ namespace Orchard.Caching.Services { void Remove(string key); void Clear(); } + + public interface ICacheStorageProviderWithKeyPrefix : ICacheStorageProvider { + void Clear(string key); + } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Redis/Caching/RedisCacheStorageProvider.cs b/src/Orchard.Web/Modules/Orchard.Redis/Caching/RedisCacheStorageProvider.cs index 5f3c8896d..50fd81649 100644 --- a/src/Orchard.Web/Modules/Orchard.Redis/Caching/RedisCacheStorageProvider.cs +++ b/src/Orchard.Web/Modules/Orchard.Redis/Caching/RedisCacheStorageProvider.cs @@ -9,10 +9,9 @@ using StackExchange.Redis; using System; namespace Orchard.Redis.Caching { - [OrchardFeature("Orchard.Redis.Caching")] [OrchardSuppressDependency("Orchard.Caching.Services.DefaultCacheStorageProvider")] - public class RedisCacheStorageProvider : Component, ICacheStorageProvider { + public class RedisCacheStorageProvider : Component, ICacheStorageProviderWithKeyPrefix { public const string ConnectionStringKey = "Orchard.Redis.Cache"; private readonly ShellSettings _shellSettings; @@ -61,6 +60,10 @@ namespace Orchard.Redis.Caching { _connectionMultiplexer.KeyDeleteWithPrefix(GetLocalizedKey("*")); } + public void Clear(string key) { + _connectionMultiplexer.KeyDeleteWithPrefix(GetLocalizedKey($"{_shellSettings.Name}:{key}")); + } + private string GetLocalizedKey(string key) { return _shellSettings.Name + ":Cache:" + key; }