Таблица 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,
которая хранит задачи в очереди для обработки