无法将 Redis.RedisValue 转换为任务 <T>
Unable to convert Redis.RedisValue to Task<T>
我正在尝试编写一个通用的 class/interface 来从 Redis 缓存中获取数据。我试图使它通用,因为我们有不同类型的数据,并且很难为每种数据类型编写这么多 classes。
这是我的界面 & class。
public interface IRedisCache<T>
{
Task<T> GetValue(string code);
}
public class RedisCache<T> : IRedisCache<T>
{
public RedisCache()
{
}
public Task<T> GetValue(string code)
{
var cache = RedisConnectorHelper.Connection.GetDatabase();
var value = cache.StringGet($"Device_Status:{code}");
Task<T> myTask = (Task<T>)value;
return myTask;
}
}
我在排队时遇到问题:
Task<T> myTask = (Task<T>)value;
问题在于将 Redis.RedisValue 类型转换为 Task<T>
类型。
我收到错误消息
"Cannot convert Redis.Redisvalue
type to System.Threading.Tasks.Task<T>
"
我正在使用 Stack Exchange.Redis 库,带有 Dot Net 核心 2。
假设该值最初在缓存中存储为 JSON,
cache.StringSet($"Device_Status:{code}", JsonConvert.SerializeObject(myObject)));
然后将返回值反序列化为所需的类型
public async Task<T> GetValue(string code) {
var cache = RedisConnectorHelper.Connection.GetDatabase();
var value = await cache.StringGetAsync($"Device_Status:{code}");
T resultFromCache = JsonConvert.DeserializeObject<T>(value);
return resultFromCache;
}
我建议将缓存服务重构为
public interface IRedisCache {
Task<T> GetValue<T>(string code);
}
使用上面建议的实现
public class RedisCache : IRedisCache {
public async Task<T> GetValue<T>(string code) {
var cache = RedisConnectorHelper.Connection.GetDatabase();
var value = await cache.StringGetAsync($"Device_Status:{code}");
T resultFromCache = JsonConvert.DeserializeObject<T>(value);
return resultFromCache;
}
}
我正在尝试编写一个通用的 class/interface 来从 Redis 缓存中获取数据。我试图使它通用,因为我们有不同类型的数据,并且很难为每种数据类型编写这么多 classes。
这是我的界面 & class。
public interface IRedisCache<T>
{
Task<T> GetValue(string code);
}
public class RedisCache<T> : IRedisCache<T>
{
public RedisCache()
{
}
public Task<T> GetValue(string code)
{
var cache = RedisConnectorHelper.Connection.GetDatabase();
var value = cache.StringGet($"Device_Status:{code}");
Task<T> myTask = (Task<T>)value;
return myTask;
}
}
我在排队时遇到问题:
Task<T> myTask = (Task<T>)value;
问题在于将 Redis.RedisValue 类型转换为 Task<T>
类型。
我收到错误消息
"Cannot convert
Redis.Redisvalue
type toSystem.Threading.Tasks.Task<T>
"
我正在使用 Stack Exchange.Redis 库,带有 Dot Net 核心 2。
假设该值最初在缓存中存储为 JSON,
cache.StringSet($"Device_Status:{code}", JsonConvert.SerializeObject(myObject)));
然后将返回值反序列化为所需的类型
public async Task<T> GetValue(string code) {
var cache = RedisConnectorHelper.Connection.GetDatabase();
var value = await cache.StringGetAsync($"Device_Status:{code}");
T resultFromCache = JsonConvert.DeserializeObject<T>(value);
return resultFromCache;
}
我建议将缓存服务重构为
public interface IRedisCache {
Task<T> GetValue<T>(string code);
}
使用上面建议的实现
public class RedisCache : IRedisCache {
public async Task<T> GetValue<T>(string code) {
var cache = RedisConnectorHelper.Connection.GetDatabase();
var value = await cache.StringGetAsync($"Device_Status:{code}");
T resultFromCache = JsonConvert.DeserializeObject<T>(value);
return resultFromCache;
}
}