Skip to content

Commit 0ee6795

Browse files
authored
Upgrade StackExchange.Redis to v2.6.122 (#258)
1 parent 8f5956b commit 0ee6795

File tree

8 files changed

+27
-29
lines changed

8 files changed

+27
-29
lines changed

CacheTower.sln

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CacheTower.Serializers.Newt
4545
EndProject
4646
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CacheTower.Serializers.Protobuf", "src\CacheTower.Serializers.Protobuf\CacheTower.Serializers.Protobuf.csproj", "{436A6DF0-3DD8-4342-ACC5-EF0B8D5DF9DD}"
4747
EndProject
48-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CacheTower.Serializers.SystemTextJson", "src\CacheTower.Serializers.SystemTextJson\CacheTower.Serializers.SystemTextJson.csproj", "{4E94E3E8-3CC0-4F23-BFD7-157C8C386AFB}"
48+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CacheTower.Serializers.SystemTextJson", "src\CacheTower.Serializers.SystemTextJson\CacheTower.Serializers.SystemTextJson.csproj", "{4E94E3E8-3CC0-4F23-BFD7-157C8C386AFB}"
4949
EndProject
5050
Global
5151
GlobalSection(SolutionConfigurationPlatforms) = preSolution

src/CacheTower.Extensions.Redis/CacheTower.Extensions.Redis.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
</PropertyGroup>
1010

1111
<ItemGroup>
12-
<PackageReference Include="StackExchange.Redis" Version="2.6.116" />
12+
<PackageReference Include="StackExchange.Redis" Version="2.6.122" />
1313
</ItemGroup>
1414

1515
<ItemGroup>

src/CacheTower.Extensions.Redis/RedisLockExtension.cs

+4-2
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public RedisLockExtension(IConnectionMultiplexer connection, RedisLockOptions op
4545

4646
LockedOnKeyRefresh = new ConcurrentDictionary<string, TaskCompletionSource<bool>>(StringComparer.Ordinal);
4747

48-
Subscriber.Subscribe(options.RedisChannel, (channel, value) =>
48+
Subscriber.Subscribe(GetRedisChannel(), (channel, value) =>
4949
{
5050
if (!value.IsNull)
5151
{
@@ -54,6 +54,8 @@ public RedisLockExtension(IConnectionMultiplexer connection, RedisLockOptions op
5454
});
5555
}
5656

57+
private RedisChannel GetRedisChannel() => new(Options.RedisChannel, RedisChannel.PatternMode.Auto);
58+
5759
/// <inheritdoc/>
5860
public void Register(ICacheStack cacheStack)
5961
{
@@ -68,7 +70,7 @@ public void Register(ICacheStack cacheStack)
6870
private async ValueTask ReleaseLockAsync(string cacheKey)
6971
{
7072
var lockKey = string.Format(Options.KeyFormat, cacheKey);
71-
await Subscriber.PublishAsync(Options.RedisChannel, cacheKey, CommandFlags.FireAndForget);
73+
await Subscriber.PublishAsync(GetRedisChannel(), cacheKey, CommandFlags.FireAndForget);
7274
await Database.KeyDeleteAsync(lockKey, CommandFlags.FireAndForget);
7375
UnlockWaitingTasks(cacheKey);
7476
}

src/CacheTower.Extensions.Redis/RedisRemoteEvictionExtension.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ namespace CacheTower.Extensions.Redis
1212
public class RedisRemoteEvictionExtension : ICacheChangeExtension
1313
{
1414
private ISubscriber Subscriber { get; }
15-
private string FlushChannel { get; }
16-
private string EvictionChannel { get; }
15+
private RedisChannel FlushChannel { get; }
16+
private RedisChannel EvictionChannel { get; }
1717

1818
private bool IsRegistered { get; set; }
1919

@@ -39,8 +39,8 @@ public RedisRemoteEvictionExtension(IConnectionMultiplexer connection, string ch
3939
}
4040

4141
Subscriber = connection.GetSubscriber();
42-
FlushChannel = $"{channelPrefix}.RemoteFlush";
43-
EvictionChannel = $"{channelPrefix}.RemoteEviction";
42+
FlushChannel = new($"{channelPrefix}.RemoteFlush", RedisChannel.PatternMode.Auto);
43+
EvictionChannel = new($"{channelPrefix}.RemoteEviction", RedisChannel.PatternMode.Auto);
4444
FlaggedEvictions = new HashSet<string>(StringComparer.Ordinal);
4545
}
4646

src/CacheTower.Providers.Redis/CacheTower.Providers.Redis.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
</PropertyGroup>
1010

1111
<ItemGroup>
12-
<PackageReference Include="StackExchange.Redis" Version="2.6.116" />
12+
<PackageReference Include="StackExchange.Redis" Version="2.6.122" />
1313
</ItemGroup>
1414

1515
<ItemGroup>

src/CacheTower.Providers.Redis/RedisCacheLayer.cs

+7-11
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,8 @@ public async ValueTask FlushAsync()
7575
var redisValue = await Database.StringGetAsync(cacheKey);
7676
if (redisValue != RedisValue.Null)
7777
{
78-
using (var stream = new MemoryStream(redisValue))
79-
{
80-
return Options.Serializer.Deserialize<CacheEntry<T>>(stream);
81-
}
78+
using var stream = new MemoryStream(redisValue);
79+
return Options.Serializer.Deserialize<CacheEntry<T>>(stream);
8280
}
8381

8482
return default;
@@ -99,13 +97,11 @@ public async ValueTask SetAsync<T>(string cacheKey, CacheEntry<T> cacheEntry)
9997
return;
10098
}
10199

102-
using (var stream = new MemoryStream())
103-
{
104-
Options.Serializer.Serialize(stream, cacheEntry);
105-
stream.Seek(0, SeekOrigin.Begin);
106-
var redisValue = RedisValue.CreateFrom(stream);
107-
await Database.StringSetAsync(cacheKey, redisValue, expiryOffset);
108-
}
100+
using var stream = new MemoryStream();
101+
Options.Serializer.Serialize(stream, cacheEntry);
102+
stream.Seek(0, SeekOrigin.Begin);
103+
var redisValue = RedisValue.CreateFrom(stream);
104+
await Database.StringSetAsync(cacheKey, redisValue, expiryOffset);
109105
}
110106
}
111107
}

tests/CacheTower.Tests/Extensions/Redis/RedisLockExtensionTests.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public async Task RefreshValueNotifiesChannelSubscribers()
7474

7575
var completionSource = new TaskCompletionSource<bool>();
7676

77-
await connection.GetSubscriber().SubscribeAsync("CacheTower.CacheLock", (channel, value) =>
77+
await connection.GetSubscriber().SubscribeAsync(new("CacheTower.CacheLock", RedisChannel.PatternMode.Literal), (channel, value) =>
7878
{
7979
if (value == "TestKey")
8080
{
@@ -126,7 +126,7 @@ public async Task ObservedLockSingle()
126126
Assert.IsTrue(extension.LockedOnKeyRefresh.ContainsKey("TestKey"), "Lock was not established");
127127

128128
//Trigger the end of the lock
129-
await connection.GetSubscriber().PublishAsync("CacheTower.CacheLock", "TestKey");
129+
await connection.GetSubscriber().PublishAsync(new("CacheTower.CacheLock", RedisChannel.PatternMode.Literal), "TestKey");
130130

131131
var succeedingTask = await Task.WhenAny(lockTask, Task.Delay(TimeSpan.FromSeconds(10)));
132132
if (!succeedingTask.Equals(lockTask))
@@ -160,7 +160,7 @@ public async Task ObservedLockMultiple()
160160
Assert.IsTrue(extension.LockedOnKeyRefresh.ContainsKey("TestKey"), "Lock was not established");
161161

162162
//Trigger the end of the lock
163-
await connection.GetSubscriber().PublishAsync("CacheTower.CacheLock", "TestKey");
163+
await connection.GetSubscriber().PublishAsync(new("CacheTower.CacheLock", RedisChannel.PatternMode.Literal), "TestKey");
164164

165165
var whenAllRefreshesTask = Task.WhenAll(lockTask1, lockTask2);
166166
var succeedingTask = await Task.WhenAny(whenAllRefreshesTask, Task.Delay(TimeSpan.FromSeconds(10)));

tests/CacheTower.Tests/Extensions/Redis/RedisRemoteEvictionExtensionTests.cs

+6-6
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public async Task RemoteEvictionOccursOnRefresh()
6060
extensionTwo.Register(cacheStackMockTwo);
6161

6262
var completionSource = new TaskCompletionSource<bool>();
63-
connection.GetSubscriber().Subscribe("CacheTower.RemoteEviction").OnMessage(channelMessage =>
63+
connection.GetSubscriber().Subscribe(new("CacheTower.RemoteEviction", RedisChannel.PatternMode.Literal)).OnMessage(channelMessage =>
6464
{
6565
if (channelMessage.Message == "TestKey")
6666
{
@@ -111,7 +111,7 @@ public async Task RemoteEvictionOccursOnLocalEviction()
111111
extensionTwo.Register(cacheStackMockTwo);
112112

113113
var completionSource = new TaskCompletionSource<bool>();
114-
connection.GetSubscriber().Subscribe("CacheTower.RemoteEviction").OnMessage(channelMessage =>
114+
connection.GetSubscriber().Subscribe(new("CacheTower.RemoteEviction", RedisChannel.PatternMode.Literal)).OnMessage(channelMessage =>
115115
{
116116
if (channelMessage.Message == "TestKey")
117117
{
@@ -166,7 +166,7 @@ public async Task RemoteFlush()
166166
extensionTwo.Register(cacheStackMockTwo);
167167

168168
var completionSource = new TaskCompletionSource<bool>();
169-
connection.GetSubscriber().Subscribe("CacheTower.RemoteFlush").OnMessage(channelMessage =>
169+
connection.GetSubscriber().Subscribe(new("CacheTower.RemoteFlush", RedisChannel.PatternMode.Literal)).OnMessage(channelMessage =>
170170
{
171171
if (channelMessage.Message == StackExchange.Redis.RedisValue.EmptyString)
172172
{
@@ -210,9 +210,9 @@ public async Task NoEvictionOnNewEntries()
210210
var subscriberMock = Substitute.For<ISubscriber>();
211211

212212
subscriberMock.Subscribe(Arg.Any<RedisChannel>(), Arg.Any<CommandFlags>())
213-
.Returns(x => realConnection.GetSubscriber().Subscribe("DummyMessageQueue"));
213+
.Returns(x => realConnection.GetSubscriber().Subscribe(new("DummyMessageQueue", RedisChannel.PatternMode.Literal)));
214214
subscriberMock.Subscribe(Arg.Any<RedisChannel>(), Arg.Any<CommandFlags>())
215-
.Returns(x => realConnection.GetSubscriber().Subscribe("DummyMessageQueue"));
215+
.Returns(x => realConnection.GetSubscriber().Subscribe(new("DummyMessageQueue", RedisChannel.PatternMode.Literal)));
216216
connectionMock.GetSubscriber(Arg.Any<object>())
217217
.Returns(subscriberMock);
218218

@@ -222,7 +222,7 @@ public async Task NoEvictionOnNewEntries()
222222

223223
await cacheStackOne.GetOrSetAsync<int>("NoEvictionOnNewEntries", _ => Task.FromResult(1), new CacheSettings(TimeSpan.FromMinutes(5)));
224224

225-
await subscriberMock.DidNotReceive().PublishAsync("CacheTower.RemoteEviction", Arg.Any<RedisValue>(), Arg.Any<CommandFlags>());
225+
await subscriberMock.DidNotReceive().PublishAsync(new("CacheTower.RemoteEviction", RedisChannel.PatternMode.Literal), Arg.Any<RedisValue>(), Arg.Any<CommandFlags>());
226226
}
227227
}
228228
}

0 commit comments

Comments
 (0)