0

我刚刚开始使用 ServiceStack.Redis。我可以将单个键/值放入缓存中并从缓存中获取它们。但是,我似乎无法获取缓存中的所有项目或项目计数。

这是代码

using (RedisClient cacheClient = new RedisClient(cacheServer))
{
    IRedisTypedClient<CustomerEntity> customerCache = cacheClient.As<CustomerEntity>();
    customer = bl.FetchCustomer(customerId);
    //cache for two minutes
    customerCache.SetEntry(customerId, customer, new TimeSpan(0, 2, 0));

    //These all show the count as 0
    logger.Debug(customerCache.GetAll().Count);
    logger.Debug(cacheClient.GetAll<CustomerEntity>().Count);

    var customers = customerCache.GetAll();
    logger.Debug("{0} customers in the cache", customers.Count);
}
4

1 回答 1

0

在您的 CustomerEntity 类中:(例如)

public string strManufacturer;

应替换为

public string strManufacturer { get; set; }

我猜当 getter 和 setter 没有明确定义时,redis 无法访问。

我无法将我的 C# 对象存储在 redis 中,这个修改为我解决了这个问题。我得到了输出

"{}"

在 redis-cli 中,当我在进行此修改之前“获取”密钥并且 GetAll().Count 返回 0 时,就像您的情况一样。如果要在生产环境中使用 ServiceStack.Redis,还应注意其许可条款。有关 SO 的讨论,请参见此处

于 2014-07-31T12:33:02.073 回答