Локальный и глобальный кеш

Локальный кеш - сохраняемые данные, которые доступны только текущему скрипту.

Глобальный кеш - сохраняемы данные, которые доступны всем скриптам и агентам.

Методы для работы с локальным кешем:

  • IContext.StoreObject(...) - Записать объект в кеш

  • IContext.LoadObject(...) - Загрузить объект из кеша.

Методы для работы с глобальным кешем:

  • IContext.StoreGlobalObject(...) - Записать объект в глобальный кеш.

  • IContext.LoadGlobalObject(...) - Загрузить объект из глобального кеша

Важно: периодически кеш данных очищается для освобождения места. Для того чтобы при очередном сжатии не удалились данные их нужно обернуть в класс NotClearableContainer.

Пример с глобальным кешем:

using TSLab.DataSource;
using TSLab.Script;
using TSLab.Script.Handlers;

namespace MyLib
{
    public class TestGlobalCashe : IExternalScript
    {
        public void Execute(IContext ctx, ISecurity sec)
        {
            // Записать в глобальный кеш
            var value = 1.1; // значение
            var key = "key"; // ключ в кеше (любая уникальная строка)
            var container = new NotClearableContainer<double>(value);
            ctx.StoreGlobalObject(key, container);

            // Прочитать из глобального кеша
            var key2 = "key";
            var container2 = ctx.LoadGlobalObject(key2) as NotClearableContainer<double>;
            var value2 = container2?.Content;
            ctx.Log($"Value: {value2}", MessageType.Info, true);
        }
    }
}

Примечание: при кешировании на диск идет сериализация объекта через BinaryFormatter. Поэтому все классы объектов, которые кешируются должны иметь атрибут [Serializable].

Last updated