NCache не учитывает скользящий срок действия, когда вы получаете элементы по тегам - PullRequest
0 голосов
/ 25 января 2019

Похоже, что NCache высвобождает CacheItem объекты без должного учета свойства SlidingExpiration, возможно, когда доступ к указанным объектам осуществляется только с помощью OQL или методов поиска на основе Tag, таких как GetByAllTags().

Следующий код отвечает за вставку CacheItem со свойством SlidingExpiration.

        CacheItem cacheItem = new CacheItem(model)
        {
            Tags = new[]
            {
                new Tag(WalletTransactionKeyName),
                new Tag(TagOwnerId(model.OwnerId)),
            },
            SlidingExpiration = TimeSpan.FromDays(30),
            Priority = CacheItemPriority.Default
        };

        Cache.Insert(BuildCacheKey(WalletTransactionKeyName, model.TransactionId), cacheItem);

Следующий код отвечает за доступ к объектам с использованием метода поиска Tag, который также является единственным другим методом, который касается этого CacheItem объекта.

        Hashtable results = Cache.GetByAllTags(
            new[]
            {
                new Tag(WalletTransactionKeyName),
                new Tag(TagOwnerId(ownerId))
            });

        if (results.Count == 0)
        {
            return new List<WalletTransactionModel>();
        }

        List<WalletTransactionModel> transactions = new List<WalletTransactionModel>(results.Count);
        foreach (DictionaryEntry entry in results)
        {
            WalletTransactionModel transaction = entry.Value as WalletTransactionModel;
            if (transaction == null)
            {
                continue;
            }

            transactions.Add(transaction);
        }

        transactions = transactions.OrderByDescending(t => t.TransactionDateTime).ToList();

        return transactions;

Ожидается, что транзакция CacheItem будет храниться в Cache в течение как минимум 30 дней с момента последнего обращения к ней, однако, по-видимому, она будет исключена в течение 12-часового периода. .

1 Ответ

0 голосов
/ 21 февраля 2019

Я сталкивался с тем же вопросом на Github - вы можете посмотреть ссылку ниже

https://github.com/Alachisoft/NCache/issues/33

...