powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / IMemoryCache
16 сообщений из 16, страница 1 из 1
IMemoryCache
    #39544194
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в чем профит что у IMemoryCache нет доступа до колеции ключей элементов? простая задача удалить по патерну объекты, а приходиться вводить дикшенери ключей, чтоб там по патрену найти и удалить.
...
Рейтинг: 0 / 0
IMemoryCache
    #39544219
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRu,

Вы о Microsoft.Extensions.Caching.Memory.IMemoryCache, что в ASP.NET Core используется?

И что за задача такая, какой в ней смысл? Если банальная инвалидация, то зачем что-то искать и удалять?
Вроде как принято делать проще: добавлять в ключ динамическую составляющую (некую версию).
...
Рейтинг: 0 / 0
IMemoryCache
    #39544228
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

да о том кеше. ну вот задача..мы кешируем к примеру смежные сущности через индетификатор рутовой сушности к примеру userid в виде ключа someentity_userid и все смежные данные someentity_userid_somedata1, someentity_userid_somedata2. соотвестнно найти по патерну someentity_userid ключи и удалить надо.

во фреймворке был доступ до колекции ключей
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public void RemoveByPrefix(string prefix)
        {
            var item = Cache.GetEnumerator();
            while (item.MoveNext())
            {
                if (item.Key.ToString().Contains(prefix))
                    Cache.Remove(item.Key.ToString());
            }
        }


ну я конечно добавив в виде хранилища ConcurrentDictionary ключей решил проблему, но был удивлен за неимением возможности сделать как в предыдущей версии кеша.
...
Рейтинг: 0 / 0
IMemoryCache
    #39544240
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuсоотвестнно найти по патерну someentity_userid ключи и удалить надоВы так и не написали, а зачем? Что произошло-то: пользователя удалили?

handmadeFromRuбыл удивлен за неимением возможности сделать как в предыдущей версии кешаПредыдущая версия - это какая? MemoryCache из System.Runtime.Caching, что реализует IEnumerable<KeyValuePair<string, object>>?
...
Рейтинг: 0 / 0
IMemoryCache
    #39544245
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRu,

а Вы пробовали импользовать так называемые dependent entries? Они вместе с parent-ом не удаляются?
...
Рейтинг: 0 / 0
IMemoryCache
    #39544251
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C ASP.NET Core пока плотно не работал, но вот бегло читаю документацию: Introduction to in-memory caching in ASP.NET Core , - и там написано:
Cache dependenciesUsing a CancellationTokenSource allows multiple cache entries to be evicted as a group.
...
Рейтинг: 0 / 0
IMemoryCache
    #39544254
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA, извиняюсь за сумбурность

1. удаление да
2. System.Runtime.Caching
3 dependent entries не слышал честно.. надо погуглить
...
Рейтинг: 0 / 0
IMemoryCache
    #39544256
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAC ASP.NET Core пока плотно не работал, но вот бегло читаю документацию: Introduction to in-memory caching in ASP.NET Core , - и там написано:
Cache dependenciesUsing a CancellationTokenSource allows multiple cache entries to be evicted as a group.
да я эт читал но выглядит по мне не очень приятно в реализации. групировка по части ключи на мой взгляд более понятнее. ну ладно я уже обошел за счет дикшенери это
...
Рейтинг: 0 / 0
IMemoryCache
    #39544269
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuskyANAC ASP.NET Core пока плотно не работал, но вот бегло читаю документацию: Introduction to in-memory caching in ASP.NET Core , - и там написано:
пропущено...

да я эт читал но выглядит по мне не очень приятно в реализации. групировка по части ключи на мой взгляд более понятнее. ну ладно я уже обошел за счет дикшенери это

По мне так вообще зашибись, наконец-то додумались сделать вменяемую инвалидацию
...
Рейтинг: 0 / 0
IMemoryCache
    #39544454
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
раз вы оба настаиваете ..попробую еше раз "распробовать")
...
Рейтинг: 0 / 0
IMemoryCache
    #39544728
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuраз вы оба настаиваете ..попробую еше раз "распробовать")
И ещё интересно как так у Вас получается, что возможна ситуация, когда после удаления пользователя проходит запрос к его смежным данным?
...
Рейтинг: 0 / 0
IMemoryCache
    #39545017
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhandmadeFromRuраз вы оба настаиваете ..попробую еше раз "распробовать")
И ещё интересно как так у Вас получается, что возможна ситуация, когда после удаления пользователя проходит запрос к его смежным данным?

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


п.с. по поводу кеша в статье возникли вопросы и в статье не нашел ответов.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
//где то в коде надо проинициализировать токен ну ок внутри родителя можем держать, но эт мало относиться к бизнеслогике или модели бд
 var cts = new CancellationTokenSource();
 _cache.Set(CacheKeys.DependentCTS, cts);

// потом с помощью using объединить якобы но тут нет инфы как токен влияет на сам родитель или я чего то не вижу?
using (var entry = _cache.CreateEntry(CacheKeys.Parent))
{
        // expire this entry if the dependant entry expires.
        entry.Value = DateTime.Now;
        entry.RegisterPostEvictionCallback(DependentEvictionCallback, this);

// прокинуть в зависимого токен...а если я где то в сервисе хочу прокинуть зависимого в объединение? вне using групировка будет?
// заранее надо иметь полную модель получается что не всегда так будет и надо будет докидывать части модели
        _cache.Set(CacheKeys.Child, DateTime.Now, new CancellationChangeToken(cts.Token));
}
...
Рейтинг: 0 / 0
IMemoryCache
    #39545134
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRu,

не нужен тебе юзинг, вот демонстрация, для полного понимания

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
        static void Main(string[] args)
        {
            var cts = new CancellationTokenSource();

            IMemoryCache cache = new MemoryCache(new MemoryCacheOptions { });

            var v1 = GetFromCache(cache, cts);
            var v2 = GetFromCache(cache, cts);

            Assert.AreEqual(v1, v2);

            cts.Cancel();

            var v3 = GetFromCache(cache, cts);

            Assert.AreNotEqual(v1, v3);
        }

        private static string GetFromCache(IMemoryCache cache, CancellationTokenSource cts)
        {
            return cache.GetOrCreate("test", entry =>
            {
                entry.AddExpirationToken(new CancellationChangeToken(cts.Token));
                return Guid.NewGuid().ToString();
            });
        }
...
Рейтинг: 0 / 0
IMemoryCache
    #39545147
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

так у тебя нет групировки в примере ..просто время жизни на основе CancellationTokenSource
...
Рейтинг: 0 / 0
IMemoryCache
    #39545154
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRu,

я бы пока не практиковал использовать этот паттерн

https://github.com/aspnet/Caching/issues/340
...
Рейтинг: 0 / 0
IMemoryCache
    #39545155
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
точнее вообще, не стоит его использовать, так как его могут убрать, и правильно сделают
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / IMemoryCache
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]