WebApi - кеш Redis против кеша вывода

Я изучал Redis (никакого опыта - просто изучал теорию), и после некоторых исследований обнаружил, что он также используется в качестве кеша. например Сам StackOverfolow.

Мой вопрос: если у меня есть служба asp.net WebApi, и я использую кеширование вывода на уровне WebApi для кеширования ответов, я в основном сохраняю тип ключа / значения (запрос / ответ) в памяти сервера для доставки кешированных ответов.

Теперь, когда redis находится в базе данных в памяти, как это поможет мне заменить кеширование вывода WebApi на кеш Redis?

Есть ли преимущество?

Я попытался пройти этот ответ redis-cache-vs-using-memory-directyly, но я полагаю, что не понял ключевой строчки в ответе:

«По сути, если вам нужно, чтобы ваше приложение масштабировалось на нескольких узлах, использующих одни и те же данные, тогда потребуется что-то вроде Redis (или любого другого удаленного хранилища ключей / значений)».


person M. Ali Iftikhar    schedule 24.03.2014    source источник


Ответы (1)


Я в основном храню ключ / значение (запрос / ответ) в памяти сервера для доставки кешированных ответов.

Это означает, что после перезапуска сервера серверу придется перестраивать кеш. С Redis этого не произойдет. Таким образом, одним из преимуществ Redis перед самодельным решением в памяти является постоянство (только если это проблема для вас и вы не планировали писать постоянство самостоятельно).

Затем вместо кодирования собственного механизма истечения срока вы можете использовать Redis EXPIRE или команду EXPIREAT или даже просто указав метку времени истечения при помещении выходной строки api в кеш. с помощью SETEX.

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

Это означает, что если у вас есть несколько экземпляров одних и тех же серверов api, размещение кеша в Redis позволит этим серверам совместно использовать один и тот же кеш, тем самым уменьшая, например, потребление памяти (1 кеш вместо 3 кешей в памяти) , и так далее...

person FGRibreau    schedule 24.03.2014
comment
Спасибо. Теперь я убежден, что это обязательно понадобится в случае упомянутого вами масштабирования. Однако для первой части вашего ответа ... Я имел в виду, что использовал функцию кеширования вывода Asp.Net по умолчанию. Который, я думаю, управляет большинством вещей, о которых вы упомянули выше. Я не занимаюсь построением кеша вывода, я просто использую встроенную функцию. В этом контексте не могли бы вы вкратце рассказать о том, что кеш Redis может предложить, а кеш вывода asp.net - нет? - person M. Ali Iftikhar; 24.03.2014
comment
Я также понимаю, что при перезапуске сервера встроенный кеш asp.net будет потерян, а redis будет поддерживать свой кеш. Любое другое преимущество? - person M. Ali Iftikhar; 24.03.2014
comment
Извините, я не был знаком с кешем вывода Asp.net. В случае сценария кэширования Redis предлагает множество преимуществ: конфигурация времени выполнения, ведущий / ведомый, сохранение состояния, необязательная долговечность (см. RDB и AOF), ... - person FGRibreau; 24.03.2014
comment
Конечно, вы должны учитывать, что с redis / memchached или другим хранилищем ключ-значение ваши данные должны быть сериализованы в другое приложение, что снижает производительность. Для лучшей производительности карта находится в кеше памяти asp.net (память используется совместно, поэтому сериализация данных не требуется). Конечно, redis / memchached предлагает множество других преимуществ, которые могут вас заинтересовать. - person George Mavritsakis; 24.04.2014