Skip to content

Commit

Permalink
Merge pull request #355 from dotnetcore/iss-350
Browse files Browse the repository at this point in the history
fix: SearchKeys with optional count and add SearchKeys Async for IRed…
  • Loading branch information
catcherwong authored Apr 9, 2022
2 parents aa71851 + a235047 commit f72abd4
Show file tree
Hide file tree
Showing 6 changed files with 68 additions and 32 deletions.
12 changes: 6 additions & 6 deletions build/releasenotes.props
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
<Project>
<PropertyGroup>
<EasyCachingCorePackageNotes>
1. Upgrading dependencies.
</EasyCachingCorePackageNotes>
1. IRedisCachingProvider Support SearchKeysAsync.
</EasyCachingCorePackageNotes>
<EasyCachingMemcachedPackageNotes>
1. Upgrading dependencies.
</EasyCachingMemcachedPackageNotes>
<EasyCachingRedisPackageNotes>
1. Fix removebyprefix when enable keyprefix.
</EasyCachingRedisPackageNotes>
1. IRedisCachingProvider Support SearchKeysAsync.
</EasyCachingRedisPackageNotes>
<EasyCachingSQLitePackageNotes>
1. Upgrading dependencies.
</EasyCachingSQLitePackageNotes>
Expand Down Expand Up @@ -37,8 +37,8 @@
1. Upgrading dependencies.
</EasyCachingProtobufPackageNotes>
<EasyCachingCSRedisPackageNotes>
1. Upgrading dependencies.
</EasyCachingCSRedisPackageNotes>
1. IRedisCachingProvider Support SearchKeysAsync.
</EasyCachingCSRedisPackageNotes>
<EasyCachingCSRedisBusPackageNotes>
1. Upgrading dependencies.
</EasyCachingCSRedisBusPackageNotes>
Expand Down
40 changes: 20 additions & 20 deletions build/version.props
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
<Project>
<PropertyGroup>
<EasyCachingCorePackageVersion>1.5.1</EasyCachingCorePackageVersion>
<EasyCachingMemcachedPackageVersion>1.5.1</EasyCachingMemcachedPackageVersion>
<EasyCachingRedisPackageVersion>1.5.1</EasyCachingRedisPackageVersion>
<EasyCachingSQLitePackageVersion>1.5.1</EasyCachingSQLitePackageVersion>
<EasyCachingInMemoryPackageVersion>1.5.1</EasyCachingInMemoryPackageVersion>
<EasyCachingHybridPackageVersion>1.5.1</EasyCachingHybridPackageVersion>
<EasyCachingAspectCorePackageVersion>1.5.1</EasyCachingAspectCorePackageVersion>
<EasyCachingCastlePackageVersion>1.5.1</EasyCachingCastlePackageVersion>
<EasyCachingResponseCachingPackageVersion>1.5.1</EasyCachingResponseCachingPackageVersion>
<EasyCachingJsonPackageVersion>1.5.1</EasyCachingJsonPackageVersion>
<EasyCachingMessagePackPackageVersion>1.5.1</EasyCachingMessagePackPackageVersion>
<EasyCachingProtobufPackageVersion>1.5.1</EasyCachingProtobufPackageVersion>
<EasyCachingCSRedisPackageVersion>1.5.1</EasyCachingCSRedisPackageVersion>
<EasyCachingRedisBusPackageVersion>1.5.1</EasyCachingRedisBusPackageVersion>
<EasyCachingCSRedisBusPackageVersion>1.5.1</EasyCachingCSRedisBusPackageVersion>
<EasyCachingRabbitBusPackageVersion>1.5.1</EasyCachingRabbitBusPackageVersion>
<EasyCachingDiskPackageVersion>1.5.1</EasyCachingDiskPackageVersion>
<EasyCachingMsExtPackageVersion>1.5.1</EasyCachingMsExtPackageVersion>
<EasyCachingLiteDBPackageVersion>1.5.1</EasyCachingLiteDBPackageVersion>
<EasyCachingSTJsonPackageVersion>1.5.1</EasyCachingSTJsonPackageVersion>
<EasyCachingCorePackageVersion>1.5.2</EasyCachingCorePackageVersion>
<EasyCachingMemcachedPackageVersion>1.5.2</EasyCachingMemcachedPackageVersion>
<EasyCachingRedisPackageVersion>1.5.2</EasyCachingRedisPackageVersion>
<EasyCachingSQLitePackageVersion>1.5.2</EasyCachingSQLitePackageVersion>
<EasyCachingInMemoryPackageVersion>1.5.2</EasyCachingInMemoryPackageVersion>
<EasyCachingHybridPackageVersion>1.5.2</EasyCachingHybridPackageVersion>
<EasyCachingAspectCorePackageVersion>1.5.2</EasyCachingAspectCorePackageVersion>
<EasyCachingCastlePackageVersion>1.5.2</EasyCachingCastlePackageVersion>
<EasyCachingResponseCachingPackageVersion>1.5.2</EasyCachingResponseCachingPackageVersion>
<EasyCachingJsonPackageVersion>1.5.2</EasyCachingJsonPackageVersion>
<EasyCachingMessagePackPackageVersion>1.5.2</EasyCachingMessagePackPackageVersion>
<EasyCachingProtobufPackageVersion>1.5.2</EasyCachingProtobufPackageVersion>
<EasyCachingCSRedisPackageVersion>1.5.2</EasyCachingCSRedisPackageVersion>
<EasyCachingRedisBusPackageVersion>1.5.2</EasyCachingRedisBusPackageVersion>
<EasyCachingCSRedisBusPackageVersion>1.5.2</EasyCachingCSRedisBusPackageVersion>
<EasyCachingRabbitBusPackageVersion>1.5.2</EasyCachingRabbitBusPackageVersion>
<EasyCachingDiskPackageVersion>1.5.2</EasyCachingDiskPackageVersion>
<EasyCachingMsExtPackageVersion>1.5.2</EasyCachingMsExtPackageVersion>
<EasyCachingLiteDBPackageVersion>1.5.2</EasyCachingLiteDBPackageVersion>
<EasyCachingSTJsonPackageVersion>1.5.2</EasyCachingSTJsonPackageVersion>
</PropertyGroup>
</Project>
17 changes: 17 additions & 0 deletions src/EasyCaching.CSRedis/DefaultCSRedisCachingProvider.Keys.cs
Original file line number Diff line number Diff line change
Expand Up @@ -106,5 +106,22 @@ public List<string> SearchKeys(string cacheKey, int? count)

return keys;
}

public async Task<List<string>> SearchKeysAsync(string cacheKey, int? count)
{
var keys = new List<string>();

long nextCursor = 0;
do
{
var scanResult = await _cache.ScanAsync(nextCursor, cacheKey, count ?? 250);
nextCursor = scanResult.Cursor;
var items = scanResult.Items;
keys.AddRange(items);
}
while (nextCursor != 0);

return keys;
}
}
}
8 changes: 8 additions & 0 deletions src/EasyCaching.Core/IRedisCachingProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,14 @@ public interface IRedisCachingProvider
/// <param name="count"></param>
/// <returns></returns>
List<string> SearchKeys(string cacheKey, int? count = null);

/// <summary>
/// Searchs the keys.
/// </summary>
/// <param name="cacheKey"></param>
/// <param name="count"></param>
/// <returns></returns>
Task<List<string>> SearchKeysAsync(string cacheKey, int? count = null);
#endregion

#region String
Expand Down
22 changes: 16 additions & 6 deletions src/EasyCaching.Redis/DefaultRedisCachingProvider.Keys.cs
Original file line number Diff line number Diff line change
Expand Up @@ -132,19 +132,29 @@ public async Task<object> EvalAsync(string script, string cacheKey, List<object>

public List<string> SearchKeys(string cacheKey, int? count)
{
var keys = new List<RedisKey>();
var data = new List<string>();

var server = _servers.ToArray()[0];
var keys = server.Keys(_cache.Database, pattern: cacheKey, count ?? 250).ToList();
foreach (var item in keys)
{
data.Add(item.ToString());
}

keys = server.Keys(_cache.Database, pattern: cacheKey, count.HasValue?250: count.Value).ToList();
return data;
}

public async Task<List<string>> SearchKeysAsync(string cacheKey, int? count)
{
var data = new List<string>();
if (keys.Count <= 0)
return data;

foreach (var item in keys)

var server = _servers.ToArray()[0];
var keys = server.KeysAsync(_cache.Database, pattern: cacheKey, count ?? 250);
await foreach (var item in keys)
{
data.Add(item.ToString());
}

return data;
}
}
Expand Down
1 change: 1 addition & 0 deletions src/EasyCaching.Redis/EasyCaching.Redis.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
<RepositoryUrl>https://github.com/dotnetcore/EasyCaching</RepositoryUrl>
<ProjectUrl>https://github.com/dotnetcore/EasyCaching</ProjectUrl>
<PackageIcon>nuget-icon.png</PackageIcon>
<LangVersion>latest</LangVersion>
<PackageReleaseNotes>
$(EasyCachingRedisPackageNotes)
</PackageReleaseNotes>
Expand Down

0 comments on commit f72abd4

Please sign in to comment.