Кэш памяти в .NET Core от EasyCaching

Я использую эту ссылку, чтобы сделать провайдера для Memcached DefaultMemcachedCachingProvider.

1) Я загружаю EasyCaching.Memcached через Nuget

2) добавить конфиг в startup.cs класс

 public void ConfigureServices(IServiceCollection services)
    {
        services.AddEasyCaching(option =>
        {
            //use memmemcachedory cache
            option.UseMemcached(config =>
            {
                config.DBConfig.AddServer("127.0.0.1", 11211);
            });
        });
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
    }

и строка app.UseEasyCaching(); в Configure

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.UseEasyCaching();

        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseMvc();
    }

3) и наконец звонок провайдеру

[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
    private readonly IEasyCachingProvider _provider;

    public ValuesController(IEasyCachingProvider provider)
    {
        this._provider = provider;
    }

    // GET api/values
    [HttpGet]
    public async Task<IActionResult> GetAsync()
    {
        try
        {
            await _provider.RemoveAsync("demo");

            //Set Async  
            await this._provider.SetAsync("demo", "Hello world", TimeSpan.FromMinutes(1));


            //Get Async      
            var res = await this._provider.GetAsync<string>("demo");

            return Ok(res);
        }
        catch(Exception ex)
        {
            return StatusCode(500, ex.Message);
        }

    }
}

в exception ex я принимаю ошибку

"Connection failed because the destination computer rejected the connection request 127.0.0.1:11111"

И я не знаю, как это исправлено, что я сделал не так? Я сделал это по учебнику

РЕДАКТИРОВАТЬ

стартовый класс

public IConfiguration Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddEasyCaching(option =>
        {
            //use memmemcachedory cache
            option.UseMemcached(config =>
            {
                config.DBConfig.AddServer("127.0.0.1", 11211);
            });
        });

        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.UseEasyCaching();

        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseMvc();
    }

Мой контроллер

public class ValuesController : ControllerBase
{
    private readonly IEasyCachingProvider _provider;

    public ValuesController(IEasyCachingProvider provider)
    {
        this._provider = provider;
    }

    // GET api/values
    [HttpGet]
    public IActionResult Get()
    {
        try
        {
            //Set
            _provider.Set<string>("demo", "Hello", TimeSpan.FromMinutes(1));

            //Get
            var res = _provider.Get<string>("demo");

            return Ok(res);
        }
        catch(Exception ex)
        {
            return StatusCode(500, ex.Message);
        }

    }
}

Ваш сервер Memcached работает на вашем локальном компьютере? Если да, то какой порт настроен для прослушивания? Это исключение сообщает вам, что оно не прослушивает порт 11111.

Gabriel Luci 23.07.2019 16:14

Я ничего не настраивал. В учебнике это не нужно.

Andrey 23.07.2019 16:26

В этом руководстве показано, как «обращаться с данными ваших серверов memcached». Предполагается, что у вас уже есть сервер Memcached.

Gabriel Luci 23.07.2019 16:46

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

Andrey 23.07.2019 16:55
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
2 532
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Библиотека EasyCaching просто помогает вам подключиться к вашему кешу. Различные поставщики, которые он реализует, помогают вам подключаться к любой базе данных кэширования, которая у вас есть. В случае DefaultMemcachedCachingProvider предполагается, что у вас уже есть настройка сервера Memcached.

Точно так же DefaultRedisCachingProvider предполагает, что у вас уже есть настройка сервера Редис.

Если у вас нет настройки внешнего сервера кэширования, вы можете посмотреть Кэширование в памяти, который сохранит ваш кеш в памяти вашего приложения. Это просто, но оно также стирается при перезапуске вашего приложения (что может вас устраивать, а может и нет).

Или вы можете взглянуть на Кэширование SQLite, который может хранить кеш в файле SQLite, который является просто файлом .db в вашей файловой системе. Внешний кэширующий сервер не требуется.

еще 1 вопрос я добавляю код после ПРИМЕЧАНИЕ и проблема в том что я беру ноль после _provider.Get<string>("demo"); знаете что за странное поведение? Как получить значение из кеша?

Andrey 23.07.2019 17:14

Какой поставщик кеша вы используете?

Gabriel Luci 23.07.2019 17:16

Я понимаю Memcached, после Редактировать я добавляю весь свой код

Andrey 23.07.2019 17:19

Итак, вы настроили отдельный сервер Memcached сейчас?

Gabriel Luci 23.07.2019 17:21

Я ничего не делал. Просто скопируйте код из учебника.

Andrey 23.07.2019 17:22

Тогда это не сработает. DefaultMemcachedCachingProvider только помогает вам подключиться к серверу Memcached. Если у вас нет сервера Memcached, вам нужно либо настроить его, либо использовать другого провайдера, как я описал в своем ответе.

Gabriel Luci 23.07.2019 17:24

Как это настроить, потому что я должен понять, как это сделать? интересно, почему это создает учебник без этого основного материала. Я не понимаю, зачем мне использовать сервер, если я хочу сохранить данные в кеше.

Andrey 23.07.2019 17:30

Потому что это не то, для чего этот учебник. Этот учебник написан, чтобы помочь вам использовать EasyCaching для подключения к серверу Memcached, который у вас уже есть.

Gabriel Luci 23.07.2019 17:35

Знаете ли вы руководство о том, как подключиться к серверу memcached? Я не понимаю, что делать с вашей ссылкой?

Andrey 23.07.2019 17:42

ссылку вы далиявляется руководство о том, как соединять на сервер Memcached. Чего вам не хватает, так это настоящего сервера Memcached. Если вы хотите настроить его, посмотрите на Memcached-документация

Gabriel Luci 23.07.2019 17:44

Другие вопросы по теме