Из приведенного ниже кода, до нового значения автоматически обновляется кеш, вам не нужно заново устанавливать значение кеша.
Dictionary<int, string> test = new Dictionary<int, string>()
{
{ 0, "a" },
{ 1, "b" }
};
_memoryCache.Set("TEST", test);
if (_memoryCache.TryGetValue("TEST", out object o) && o is Dictionary<int, string> cachedTest)
{
cachedTest[0] = "aa";
cachedTest.Add(2, "c");
}
if (_memoryCache.TryGetValue("TEST", out object o2) && o2 is Dictionary<int, string> cachedTest2)
{
var updatedValue = cachedTest2[0]; // this give you "aa". Also the dict contains 3 items.
}