intermediate

KV

Глобально реплицируемый key-value для конфигурации, флагов и cache-like чтений с eventual consistency.

KV — глобально реплицируемое key-value хранилище для high-read, low-write конфигурации, feature flags, JWT blocklist и cache-like lookup из Workers. Значения eventually consistent — записи распространяются с задержкой; не используйте KV как strongly consistent БД.

					const theme = (await env.FLAGS.get(`user:${userId}:theme`)) ?? 'light';
await env.FLAGS.put('maintenance', 'true', { expirationTtl: 3600 });
				

| Паттерн | Подходит | |---------|----------| | Config blob | JSON-настройки на каждый запрос | | Negative cache | Маркеры 404 для защиты origin | | Session hint | Только неавторитетные prefs | | Counter | Плохо — используйте Durable Objects |

List медленный и paginated; проектируйте keys с предсказуемыми prefix. TTL и expiration удаляют keys автоматически.

На интервью: последствия eventual consistency, KV vs Redis vs D1, именование keys, лимиты записи и защита от cache stampede.

Типовые ошибки: authoritative балансы или inventory; ожидание immediate read-your-writes по миру; огромные values; частые writes в один hot key.

Компромисс — дешёвые global reads и простота против слабой consistency и непригодности для transactional state.

Чеклист:

  • KV для read-heavy данных с допустимым staleness.
  • Namespace keys по tenant и feature.
  • TTL на эфемерные flags и кэши.
  • Счётчики и locks — в Durable Objects.