Если я изменю объект, полученный из Net Core IMemoryCache, он обновит свое состояние в кеше? - PullRequest
1 голос
/ 13 марта 2020

Я использую MemoryCache в моем Net Базовом коде.

Сначала я помещаю некоторый словарь в кеш

var dict = new ConcurrentDictionary<string, int>(/* ...some elements to add... */);
cache.Set("MyCacheKey", dict, _cacheEntryOptions);

Если я получаю объект из кэша или просто обновит этот dict объект после того, как я позвонил cache.Set, он также обновит состояние объекта в кэше? Скажем, после кода выше я звоню

dict.TryAdd(name, 1);

Нужно ли мне снова звонить cache.Set() или оно уже обновлено?

1 Ответ

2 голосов
/ 13 марта 2020

Из приведенного ниже кода, до нового значения автоматически обновляется кеш, вам не нужно заново устанавливать значение кеша.

        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.
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...