Локальный и глобальный кеш
Локальный кеш - сохраняемые данные, которые доступны только текущему скрипту.
Глобальный кеш - сохраняемы данные, которые доступны всем скриптам и агентам.
Методы для работы с локальным кешем:
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
Was this helpful?