НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
115 of 182 menu

Таблица key_value_expire

Таблица key_value_expire является частью системы кэширования Drupal и используется для хранения временных данных с установленным временем жизни (TTL). Это универсальное хранилище, которое может использоваться различными модулями для кэширования сессий, блокировок, временных настроек и других данных, которые должны быть автоматически удалены по истечении определенного времени.

Поля

Поле Тип данных Описание
collection varchar(128) Название коллекции, к которой принадлежит ключ. Позволяет группировать связанные данные (например, по модулю или функциональности).
name varchar(128) Уникальное имя ключа в пределах своей коллекции. Вместе с collection образует уникальный идентификатор записи.
value longblob Значение, связанное с ключом. Данные хранятся в сериализованном формате, что позволяет сохранять сложные структуры (массивы, объекты).
expire int Временная метка Unix, указывающая, когда запись должна считаться устаревшей и подлежать удалению. Значение 0 означает, что запись никогда не истекает.

Как это работает

Drupal использует эту таблицу как быстрое хранилище для данных, которые должны быть автоматически удалены через определенное время. Механизм очистки реализован через cron-задачи, которые периодически проверяют и удаляют устаревшие записи (где expire меньше текущего времени).

Поле collection позволяет организовывать данные в логические группы. Например, модуль может использовать коллекцию с именем модуля для хранения всех своих временных данных. Это предотвращает конфликты имен между разными модулями.

Для работы с таблицей key_value_expire Drupal предоставляет сервис keyvalue.expirable, который предлагает API для создания, чтения, обновления и удаления записей с установкой времени expiration.

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

Пример SQL-запроса

Найти все неистекшие записи для конкретной коллекции можно следующим запросом:

SELECT name, value, expire FROM key_value_expire WHERE collection = 'example_collection' AND (expire = 0 OR expire > UNIX_TIMESTAMP());

Удалить все устаревшие записи из таблицы:

DELETE FROM key_value_expire WHERE expire > 0 AND expire <= UNIX_TIMESTAMP();

Смотрите также

  • таблицу cache_default,
    которая содержит кэш данных по умолчанию
  • таблицу key_value,
    которая хранит данные ключ-значение без времени жизни
  • таблицу semaphore,
    которая используется для управления блокировками
  • таблицу queue,
    которая хранит задачи в очереди для обработки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить