Localzet Server and Cluster documentation

Storage: API и эксплуатация

Нужны PHP 8.2+ и Localzet Server ^7.0. new localzet\Storage\Server($ip = '127.0.0.1', $port = 8008, $allowObjectSerialization = false) создаёт frame listener с одним worker. new Client($servers, $allowObjectSerialization = false) принимает один host:port или массив адресов.

Операции и размещение

МетодПоведение
set($key, $value)Записать значение
get($key)Прочитать значение или null, если ключ отсутствует
add($key, $value)Записать только если ключ ещё не установлен
cas($key, $old, $new)Условная замена при совпадении старого значения
increment($key, $step = 1)Изменить числовое значение
delete($key)Удалить значение

Можно использовать свойства клиента ($client->key = $value, $value = $client->key), но методы удобнее для явной обработки возвращаемого результата. При нескольких серверах адрес выбирается по CRC32 ключа. Изменение или перестановка списка узлов меняет распределение; автоматической миграции данных нет.

Wire format и границы безопасности

Протокол использует длино-префиксированные PHP serialized frames без аутентификации и шифрования. Значения в сети должны быть совместимы с PHP serialization. Десериализация объектов выключена по умолчанию на клиенте и сервере; включение allowObjectSerialization: true с обеих сторон разрешено только для доверенной изолированной сети, где каждый peer контролируется тем же владельцем.

Оставляйте listener на loopback или закрывайте его ACL/firewall. Не выставляйте порт 8008 в Интернет и не отправляйте неограниченные payload: протокол не предоставляет клиентской авторизации, TTL API, лимита памяти или долговременного хранения. Все данные в RAM одного процесса; они пропадают при остановке. Масштабирование узлами — шардирование, а не репликация.

Перед внешним использованием отдельно проверьте конкурентные записи, timeout/recovery и поведение при потере узла. Не считайте локальную сериализационную regression-проверку защитой сети.