ServiceStack.Redis RedisTypedClient TTL

问题描述

我正在使用 ServiceStack.Redis v5.10.4 并尝试使用以下代码设置 TTL:

注意: mClientsManager = IRedisClientsManager ttl = 时间跨度?

await using var client = await mClientsManager.GetClientAsync(token).ConfigureAwait(false);
var typedClient = client.As<Test>();
await typedClient.SetValueAsync(key,value,ttl.Value,token).ConfigureAwait(false);

查看Redis中的数据,TTL设置为-1。

我做错了什么?

只是一个旁注......我使用了同步方法并且它有效。同样查看此位置,该方法似乎调用错误的重载...如果我正在查看正确的来源。

https://github.com/ServiceStack/ServiceStack.Redis/blob/master/src/ServiceStack.Redis/Generic/RedisTypedClient.Async.cs

有什么建议吗?

解决方法

我刚刚在 this commit 中修复了这个类型化的 API。此更改可从现在 available on MyGet 的最新 v5.10.5 中获得。

或者,您可以使用此异步 API 显式更改密钥的 TTL:

await client.ExpireEntryInAsync(key,ttl.Value,token)