Accelerate Bitrix with Redis: Cache, Sessions, Queues

Why Redis and Not Memcached? On an e-commerce project with a catalog of 120,000 products and a peak load of 500 concurrent users, Memcached failed to handle tagged cache. Tag invalidation required scanning all keys—with 50,000+ keys it took 3–5 seconds, blocking page generation. Each import from

Our competencies:

Frequently Asked Questions

Why Redis and Not Memcached?

On an e-commerce project with a catalog of 120,000 products and a peak load of 500 concurrent users, Memcached failed to handle tagged cache. Tag invalidation required scanning all keys—with 50,000+ keys it took 3–5 seconds, blocking page generation. Each import from 1C turned into site downtime. According to Wikipedia, Redis uses native Set structures: each tag stores a set of keys, invalidation is an atomic SMEMBERS + DEL operation taking milliseconds. We migrated the cache to Redis, and cleanup time dropped to 50 ms, boosting catalog page load speed by 40%. Beyond cache, Redis is used for sessions, business process queues, and pub/sub in on-premise Bitrix24. Get a consultation on Redis tuning for your project—we'll select the optimal configuration.

Installation and Basic Configuration

Install packages:

apt install redis-server php-redis 

Configure /etc/redis/redis.conf for Bitrix:

# Network access bind 127.0.0.1 port 6379 protected-mode yes # Memory maxmemory 2gb maxmemory-policy allkeys-lru # Persistence (can be disabled for cache) save "" # disable RDB snapshot appendonly no # disable AOF # For sessions — enable persistence # save 900 1 # appendonly yes # Performance tcp-backlog 511 tcp-keepalive 300 hz 20 # Logging loglevel notice logfile /var/log/redis/redis-server.log 

maxmemory-policy allkeys-lru — evicts least recently used keys when limit is reached. Correct policy for cache. For sessions use noeviction: better to get an error than lose a user session. Disable persistence for cache—no point writing to disk what will be invalidated anyway.

Connecting to Bitrix

Via the sprint.migration module or directly in .settings.php:

// /bitrix/.settings.php return [ 'cache' => [ 'value' => [ 'type' => \Bitrix\Main\Data\CacheEngineRedis::class, 'redis' => [ 'host' => '127.0.0.1', 'port' => 6379, 'db' => 0, ], 'sid' => md5($_SERVER['DOCUMENT_ROOT']), ], ], 'session' => [ 'value' => [ 'mode' => 'default', 'handlers' => [ 'general' => [ 'type' => 'redis', 'host' => '127.0.0.1', 'port' => 6379, 'db' => 1, // separate DB from cache ], ], ], ], ]; 

Separate cache (db:0) and sessions (db:1)—different eviction policies, separate monitoring.

Comparison: Memcached vs Redis for Bitrix

Parameter Memcached Redis
Data types only strings strings, lists, sets, hashes
Tag invalidation scan all keys (O(N)) atomic via Set (O(1))
Persistence no optional (RDB/AOF)
Queues no List, Pub/Sub, Stream
Sessions third-party libraries built-in support
High availability client-side balancing Sentinel/Cluster

Redis wins due to native structures and flexibility. For Bitrix, it's the only choice for tagged cache in large catalogs.

Redis Sentinel for High Availability

A single Redis server is a single point of failure. Redis Sentinel provides automatic failover:

redis-master (10.0.0.10:6379) redis-replica (10.0.0.11:6379) sentinel-1, sentinel-2, sentinel-3 (port 26379) 

sentinel.conf:

sentinel monitor bitrix-master 10.0.0.10 6379 2 sentinel down-after-milliseconds bitrix-master 5000 sentinel failover-timeout bitrix-master 10000 sentinel parallel-syncs bitrix-master 1 

Quorum 2—if the master is unreachable, two of three sentinels must agree on a failover. Bitrix connects to Sentinel, not directly to the master—requires a custom cache class or using Predis with Sentinel support.

How to Monitor Redis in Production?

redis-cli info stats | grep -E "keyspace_hits|keyspace_misses|evicted_keys|connected_clients" redis-cli info memory | grep -E "used_memory_human|maxmemory_human|mem_fragmentation_ratio" redis-cli --bigkeys 

mem_fragmentation_ratio > 1.5 — severe memory fragmentation. Run redis-cli memory purge or restart Redis during maintenance. If evicted_keys grows — maxmemory is too low. Increase it or analyze what's consuming memory. Aim for metrics: if keyspace_misses exceeds 5% of hits, reconsider the eviction policy.

Configuring Redis Queues for B24

For the on-premise version of Bitrix24, use Redis as the backend for push notification queues and real-time events. Enable the push server and set the queue type via API:

\Bitrix\Pull\Common::ConfigSet(['push' => ['queue' => 'redis']]); CPullOptions::SetQueueServerType('redis'); CPullOptions::SetRedisConfig([ 'host' => '127.0.0.1', 'port' => 6379, 'db' => 2, ]); 

After this, all events pass through Redis—latency drops by 30% compared to MySQL.

How to Set Up Fault-Tolerant Redis with Sentinel?

For high-load projects, we deploy a Sentinel cluster. Process:

  1. Install a replica and three sentinels.
  2. Configure master monitoring.
  3. In Bitrix, use the predis/predis library—it supports Sentinel connections.
  4. In .settings.php, specify the Sentinel connection point.
  5. Test failover: stop the master, wait 5 seconds, verify that the replica becomes master.

This achieves 99.9% availability for cache and sessions without data loss during server failure.

Eviction Policies: Which One for What?

Policy Behavior Use Case
allkeys-lru Evicts LRU keys Info block cache
volatile-lru Evicts LRU among keys with TTL Cache with limited lifetime
allkeys-random Random eviction Rarely
noeviction Returns error on limit Sessions

What's Included in the Work

We provide turnkey Redis setup:

  • Audit of current cache and session configuration.
  • Installation and optimization of Redis on the server.
  • Integration with Bitrix via .settings.php.
  • Sentinel configuration if needed.
  • Monitoring and alerts (metrics, dashboards).
  • Operations documentation.
  • Team training on basic operations.
  • Support for 2 weeks after implementation.

We have over 5 years of experience with Bitrix and Redis, completed 50+ site acceleration projects. We guarantee at least a 2x increase in page load speed. Contact us for a project evaluation—we'll select a configuration for your load.