2

我使用 StackExchange.Redis 来处理缓存。我有从缓存返回值的操作(如果值存在)

public ActionResult GetCalculatorSalaries()
    {
        var s = (string) _cache.StringGet("CalculatorSalaries");
        if (String.IsNullOrEmpty(s))
        {
            var salaries = _service.LoadCalculatorSalaries();
            _cache.SetAdd("CalculatorSalaries", (string)salaries);
            return Json(salaries, JsonRequestBehavior.AllowGet);
        }
        return Json(s, JsonRequestBehavior.AllowGet);
    }

_service.LoadCalculatorSalaries();- 这是从 Azure Blob 返回数据的服务,这里将数据返回为string.

问题:我将键“CalculatorSalaries”的值设置为,string但是当我尝试获取它时,我得到一个error, 因为该键的值是 type set

我哪里错了?


PS当我在步骤调试代码时

var s = (string) _cache.StringGet("CalculatorSalaries");

当键“CalculatorSalaries”的值存在时调试跳过并且错误仅在浏览器控制台中获取

4

1 回答 1

5

您正在调用SetAdd...从而添加了一个集合。

也许你的意思是StringSet

var salaries = _service.LoadCalculatorSalaries();
_cache.StringSet("CalculatorSalaries", (string)salaries);
//     ^^^^^^^^^ this
于 2014-08-12T11:09:04.893 回答