我第一次在我的c#应用程序中实现ServiceStack Redis(版本4)存在实体问题。
我首先在下面的界面中实现了“add”方法:
public interface ICacheClient : IDisposable
bool Add<T>(string key, T value, DateTime expiresAt);
public void Add<TValue>(string key, TValue value)where TValue : class, new()
{
_redisClient.Add(_cachePrefix + key, value);
}
这似乎没有存储在检索时返回null的对象:
_redisClient.GetById<TValue>(91876);
所以我实现了“store”方法(存储相同的实体 - (值和视频是同一个对象))并存储了与上面相同的实体:
IEntityStore
T Store<T>(T entity);
redisClient.Store(视频);
并通过以下方式检索:
_redisClient.GetById<TValue>(91876)
;
现在我能够检索实体。
我的问题是为什么描述的商店方法有效而不是添加方法?
我可以使用add方法存储对象吗?
答案 0 :(得分:0)
Add
上的ICacheClient
方法要求您向缓存实体提供完整的密钥字符串,而GetById
方法只需要Id。
ICacheClient上的所有方法始终需要完整的缓存键来检索缓存数据。 IRedisClient或IRedisTypedClient上的高级API只能在实体和ID上运行。