Skip to content

Business Cache

cache only controls business-data caches: small objects such as users, rooms, usernames, and permissions. It reduces database reads. It does not cache media bytes.

Media proxy Range-slice caching is configured separately in Proxy Slice Cache.

cache:
l1_capacity: 5000
l1_ttl_seconds: 300
l2_ttl_seconds: 300
username_cache_capacity: 10000
username_cache_ttl_seconds: 3600
permission_cache_capacity: 20000
permission_cache_ttl_seconds: 300
FieldDefaultChange whenRisk
cache.l1_capacity5000One node has enough memory and user/room cache churn is visibleToo low increases database reads; too high increases memory use
cache.l1_ttl_seconds300In-process entries should expire faster or stay longerToo long delays visible changes; too short increases database pressure
cache.l2_ttl_seconds300Redis is configured and business cache reuse should last longerHas no effect without Redis
cache.username_cache_capacity10000Login, member lists, or display paths frequently resolve usernamesToo low repeatedly falls back to the database
cache.username_cache_ttl_seconds3600Username update frequency and lookup pressure do not match defaultsToo long delays username changes; too short lowers hit rate
cache.permission_cache_capacity20000Permission cache capacity needs explicit tuningToo low increases permission-read overhead
cache.permission_cache_ttl_seconds300Permission changes should propagate faster or slowerToo long delays permission visibility

Defaults are suitable for most single-node production deployments. Confirm PostgreSQL, Redis, and indexes first, then tune cache capacities if database read pressure is still high.

If Redis is not configured, SyncTV still works. L2 cache is simply inactive.

Yes. cache is startup configuration; restart SyncTV after changing it.